https://school.programmers.co.kr/learn/courses/30/lessons/140108 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 접근 방식 문자열이 분리되고나서 다시 x를 정하는 방법 처음에 x를 '-'로 초기화한 후, x == '-'일 때 특정 문자를 x로 설정한다. 이러면, 나중에 문자열이 분리될 때 x를 다시 '-'로 초기화함으로써 새로 시작하는 문자열의 첫 글자로 x로 설정할 수 있다. 만약 두 횟수가 다른 상태이지만, 더 이상 읽을 글자가 없을 때를 파악하기 위해 left 변수를 사용하자. 문자열을 순회하면..
1. 문제 2. 정답 코드 def solution(n, lost, reserve): # lost와 reserve에서의 중복 제거; 차집합 사용 _reserve = list(set(reserve) - set(lost)) _lost = list(set(lost) - set(reserve)) for x in _reserve: if x-1 in _lost: _lost.remove(x-1) elif x+1 in _lost: _lost.remove(x+1) answer = n - len(_lost) return answer 문제의 마지막 제한사항 때문에 가장 먼저 lost와 reserve에서의 중복을 제거해야 한다. remove(값): 리스트에서 첫 번째로 등장하는 값을 삭제한다. 개인적으로 정말 안 풀리던 문제였..
1. 문제 2. 정답 코드 def fibo(n) : if n == 0 : return 0 elif n == 1 : return 1 else : l, r = 0, 1 for i in range(n-1) : l, r = r, (l + r) % 1234567 return r def solution(n): answer = fibo(n) return answer 재귀 함수 사용 시 시간 초과 및 런타임 에러 발생 ➡️ for문을 통한 다이나믹 프로그래밍 사용 8번째 줄: (l + r) % 1234567에서 1234567을 나누는 이유는 다른 언어의 경우 오버 플로우가 발생할 수도 있기 때문 { f(n-1) + f(n-2) } % 1234567은 f(n-1) % 1234567 + f(n-2) % 1234567과 같음