본문 바로가기
728x90
반응형

Python437

[프로그래머스] 시저 암호 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 문제 설명 2. 풀이과정 입력받은 문자열의 각 문자를 하나씩 추출한다. for i in s 추출한 문자를 아스키코드값으로 변환하고 거리를 더한 값을 저장한다. num = ord(i) + n 만약 추출한 문자가 공백문자이면 그대로 공백 문자를 추가한다. if (i == ' '): answer += i 만약 변환 결과가 소문자 z를 넘어가면 elif (122 < num) 변환 결과에 26을 빼준 값을 문자로 변환하여 추가한다. answer += chr(num - 26) 만약 변환 결과가 대문자 Z를 넘어가고.. 2023. 7. 7.
[프로그래머스] 삼총사 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 문제 설명 2. 풀이과정 간단하게 반복문 3개를 활용하여 배열에서 각 수를 더해 합이 0이 나오면 삼총사이다. 반복문 3개를 만든다. 각 반복문의 시작은 바깥 반복문의 바로 다음 값으로 지정한다. for i in range(len(number)): for j in range(i + 1, len(number)): for k in range(j + 1, len(number)) 만약 세 값을 더했을 때 그 합이 0이면 삼총사이다. if (number[i] + number[j] + number[k] == 0):.. 2023. 7. 7.
[백준] 1260번 : DFS와 BFS - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net 1. 문제 설명 2. 풀이과정 리스트를 만들어 각 정점의 값을 [False]로 설정한 뒤, 탐색한 정점을 True로 바꾸면서 모든 정점의 값이 True가 될 때까지 탐색한다. DFS는 재귀 알고리즘을 사용하여 계속적으로 정점에 이어진 정점을 탐색하고 탐색할 정점이 없다면 다음 정점으로 넘어가 탐색을 계속한다. BFS는 deque을 사용하여 정점에서 연결된 모든 정점을 탐색하고 연결된 정점 중 가장 작은 정점으로 넘어가 탐색을.. 2023. 7. 6.
[프로그래머스] 피보나치 수 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 문제 설명 2. 풀이과정 초기 피보나치 수 0번째 값과 1번째 값을 저장한 리스트를 생성한다. F = [0, 1] 피보나치 수를 만들 위치 값을 가진 변수를 생성하고 다음 위치인 2로 초기화한다. i = 2 원하는 지점에서 멈추기 위해 반복문을 활용한다. while (True) 피보나치 수 리스트에 다음 값(이전 값과 그전 값을 더한 값)을 추가한다. F.append(F[i - 2] + F[i - 1]) 만약 피보나치 수 위치가 입력받은 값과 동일하다면 if (i == n) 해당 피보나치 수를 12345.. 2023. 7. 6.
[프로그래머스] 다음 큰 숫자 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 문제 설명 2. 풀이과정 다음 큰 수를 찾기 위해 입력받은 다음 수를 저장한다. num = n + 1 입력받은 수를 2진수로 바꾼 결과를 저장할 리스트를 생성한다. li = list() 입력받은 수가 0이 될 때까지 반복한다. while (n != 0) 2로 나눈 나머지를 리스트에 추가한다. li.append(n % 2) 2로 나눈 몫을 새롭게 저장한다. n //= 2 다음 수의 2진수 변환 결과를 저장할 리스트를 생성한다. li2 = list() 두 2진수의 결과 리스트의 1의 개수가 같을 때까지 반복.. 2023. 7. 6.
[프로그래머스] 숫자의 표현 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 문제 설명 2. 풀이과정 1부터 입력받은 수까지 자연수를 원소로 하는 배열을 생성한다. li = list(range(1, n + 1)) 슬라이싱을 활용하여 연속된 자연수를 추출한다. 슬라이싱에 사용할 시작 위치와 종료 위치의 값을 반복문을 활용해 지정해 준다. 시작 위치는 처음부터 끝까지이고 for i in range(n + 1) 종료 위치는 시작 위치 다음부터 배열의 끝까지의 범위로 지정한다. for j in range(i + 1, n + 1) 만약 지정한 슬라이싱의 합이 입력받은 수이면 if (sum.. 2023. 7. 6.
[프로그래머스] 이상한 문자 만들기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 문제 설명 2. 풀이과정 입력받는 문자열 s의 양쪽에도 공백문자가 존재할 수 있으므로 각 단어를 공백으로 분리한 후 각 단어를 변환시켜 결합하는 것은 반례가 생길 수 있다. 따라서 입력받은 문자열을 그대로 사용하며 변환하는 방법으로 문제를 해결했다. 단어의 문자 위치를 나타낼 변수를 선언하고 초기화한다. index = 0 입력받은 문자열의 각 문자를 하나씩 추출한다. for i in s 만약 추출한 문자가 공백이면 if (i == ' ') 결과에 그대로 공백을 추가하고 answer += i 기존 단어의 .. 2023. 7. 6.
[프로그래머스] 3진법 뒤집기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 문제 설명 2. 풀이과정 입력받은 수를 3진법의 반전 결과를 저장할 리스트를 만든다. li = list() 입력받은 수가 0이 될 때까지 반복한다. while (n != 0) 수를 3으로 나눈 나머지를 리스트에 추가한다. li.append(n % 3) 수를 3으로 나눈 몫의 결과로 새로 저장한다. n //= 3 리스트의 길이만큼 반복한다. for i in range(len(li)) 3진법으로 저장되어 있는 리스트의 각 원소를 10진법으로 바꾸어 더한다. answer += li[i] * (3 ** (len.. 2023. 7. 4.
[백준] 2751번 : 수 정렬하기 2 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 2751번: 수 정렬하기 2 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 1. 문제 설명 2. 풀이과정 해당 문제는 프로그램 실행 시간이 최대한 적게 걸리도록 소스코드를 작성하는 것이 관건이다. 하여 정렬 알고리즘 중 가장 실행 시간이 적게 걸리는 병합정렬 알고리즘을 사용하여 문제를 해결하였다. 또한 자료구조 중 덱(deque)을 활용하여 병합정렬을 수행하였다. sys.stdin.readline() 함수를 사용하기 위해 sys 라이브러리를 불러온다. import sys deque이름으로 collections 라이브러리를 불.. 2023. 7. 4.
[프로그래머스] 이진 변환 반복하기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 문제 설명 2. 풀이과정 입력받은 문자열을 리스트로 변환한다. s = list(s) 전체 이진 변환 횟수를 저장해 줄 변수를 생성하고 초기화한다. count = 0 변환 과정에서 제거된 모든 0의 개수를 저장해 줄 변수를 생성하고 초기화한다. countZero = 0 원하는 시점에서 멈추기 위해 무한 반복문을 사용한다. while (True) 현재 변환 과정에서 제거된 0의 개수를 저장해 줄 변수를 생성하고 초기화한다. zero = 0 문자열 리스트의 원소를 하나씩 추출한다. for i in s 만약 추.. 2023. 7. 4.
728x90
반응형