본문 바로가기
728x90
반응형

Programmers180

[프로그래머스] 피보나치 수 - 파이썬(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.
[프로그래머스] 이진 변환 반복하기 - 파이썬(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.
[프로그래머스] 같은 숫자는 싫어 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 문제 설명 2. 풀이과정 입력받은 배열의 첫 번째 값은 무조건 결과에 들어가므로 추가해 준다. answer.append(arr[0]) 정답 배열의 인덱스 값을 계산해 줄 변수를 생성하고 초기화해 준다. i = 0 입력받은 배열의 각 원소를 하나씩 추출한다. for j in arr 만약 정답 배열의 바로 이전 값이 추출한 원소와 다른 값이면 if (answer[i] != j) 정답 배열에 추출한 원소를 추가한다. answer.append(j) 그리고 원소를 추가했으므로 정답 배열의 인덱스 값을 1 증가시킨.. 2023. 7. 3.
[프로그래머스] 올바른 괄호 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 문제 설명 2. 풀이과정 자료구조 중 스택(Stack) 구조를 활용하여 해결하였다. 공백 리스트로 스택을 하나 생성한다. stack = list() 입력받은 문자열의 각 문자를 하나씩 추출한다. for i in s 만약 추출한 문자가 여는 괄호이면 스택에 문자를 추가한다. if (i == '('): stack.append(i) 반면에 추출한 문자가 닫는 괄호일 경우 else 만약 스택이 공백 상태가 아니면 스택에서 원소를 하나 제거한다. if (len(stack) > 0): stack.pop() 반면에 .. 2023. 7. 3.
[프로그래머스] 최솟값 만들기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 문제 설명 2. 풀이과정 어떤 두 수의 곱의 누적합이 최소가 되려면 각각 최소와 최대를 서로 곱하고 그 값을 더해주면 된다. 입력받은 매개변수 A 배열은 오름차순으로 정렬하고 A.sort() 입력받은 매개변수 B 배열은 내림차순으로 정렬합니다. B.sort() B.reverse() 두 배열의 길이는 동일하므로 배열 A의 길이만큼 덧셈을 반복한다. for i in range(len(A)) 각 배열의 동일한 위치에 있는 원소끼리 곱하여 누적합에 더해준다. answer += A[i] * B[i] 3. 소스코드.. 2023. 7. 3.
[프로그래머스] 최대공약수와 최소공배수 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 문제 설명 2. 풀이과정 최대공약수는 각 수의 공약수들을 각 세트로 구한 뒤, 두 세트의 교집합 중 최댓값을 구하면 된다. 각 공약수를 저장할 세트를 생성한다. Set1 = set() Set2 = set() 각 수를 나눠줄 변수를 생성하고 1로 초기화한다. i = 1 원하는 지점에서 종료하기 위해 무한 반복문을 사용한다. while (True) 입력받은 매개변수 n의 약수를 세트에 추가한다. if (n % i == 0): Set1.add(i) 입력받은 매개변수 m의 약수를 세트에 추가한다. if (m %.. 2023. 7. 3.
728x90
반응형