본문 바로가기

728x90

Python

(24)
[프로그래머스/python] 코딩테스트 연습 Lv.2 괄호 회전하기 문제 입출력 예 Solution def solution(s): answer = 0 brackets = s * 2 for i in range(len(s)): b = brackets[i:i+len(s)] temp = "" while(b!=temp): temp = b[:] b = b.replace('[]', '') b = b.replace('{}', '') b = b.replace('()', '') if len(b)==0: answer+=1 break return answer
[프로그래머스/python] 코딩테스트 연습 Lv.2 연속 부분 수열 합의 개수 문제 입출력 예 Solution def solution(elements): sums = [] elements2 = elements + elements for i in range(1, len(elements)): for j in range(len(elements)): sums.append(sum(elements2[j:j+i])) return len(set(sums))+1 연속된 수열을 만들기 위해 기존 수열을 두배로 늘리고, 이중for문을 이용하여 전체 수열을 합한 경우를 제외한 모든 합을 sums 리스트에 append 이때 전체 수열을 합한 경우를 제외하면 모두 수열의 길이만큼 더하는 경우가 발생하므로 len(elements) 만큼 덧셈 실행 및 append 이를 set 함수를 이용하여 중복 제거 후, ..
[프로그래머스/python] 코딩테스트 연습 Lv.2 멀리 뛰기 문제 & 입출력 예 Solution def solution(n): if n==1: return 1 if n==2: return 2 fibo = [1, 2] for i in range(n-2): fibo.append(fibo[-1]+fibo[-2]) return fibo[-1]%1234567 문제를 고민하다 보니 피보나치 수열과 같은 결과값이 나와 처음에는 fibo라는 재귀함수를 만들어 풀었지만, 시간 초과가 나서 비슷한 유형이지만 피보나치 수열을 구하는 느낌의 코드로 구현함 다른 사람 풀이 def solution(n): a, b = 1, 2 for i in range(2,num): a, b = b, a+b return b 멀티플 할당을 이용한다.
[프로그래머스/python] 코딩테스트 연습 Lv.2 구명보트 문제 입출력 예 Solution def solution(people, limit): answer = 0 left = 0 right = len(people)-1 people.sort() while(left answer+=1
[프로그래머스/python] 코딩테스트 연습 Lv.2 예상 대진표 문제 일반 토너먼트 개념과 같음. A, B가 토너먼트로 진행하는 게임에서 만날 라운드 수를 return 입출력 예 Solution def solution(n,a,b): answer = 1 while((abs(a-b)==1 and min(a, b)%2==1) is False): a = int((a+1)/2) b = int((b+1)/2) answer+=1 return answer answer: 라운드 수, 1 라운드부터 시작 N-1과 N이 붙게되는 구조이되, N-1이 홀수(N이 짝수)여야 붙을 수 있으므로 while문에 위 조건이 성립될 때까지 반복 성립하지 않으면 아직 붙지 않는 것이고, 항상 이긴다는 가정을 하기 때문에 다음 라운드에 진출할 시 본인이 바뀌는 번호 할당 + 다음 라운드 카운트 조건이 성..
[프로그래머스/python] 코딩테스트 연습 Lv.2 귤 고르기 문제 입출력 예 Solution def solution(k, tangerine): answer = 0 count = [0 for _ in range(max(tangerine))] for t in tangerine: count[t-1] = count[t-1]+1 count.sort(reverse=True) while(k>0): k = k-count[answer] answer = answer+1 return answer 1. 귤의 크기가 담긴 리스트(tangerine) 중 max값 만큼의 길이를 가진 초기 리스트 생성 -> 크기에 따른 귤 개수를 count하기 위함 2. tangerine 리스트 값이 1이면 0번째 index에 count+1을 해줌, 이를 for문을 이용하여 모든 tangerine 값에 적용..
[프로그래머스/python] 코딩테스트 연습 Lv.2 영어 끝말잇기 문제 (단순 영어 끝말잇기 설명이라 생략) 입출력 예 Solution def search(words, w): for i in words: if i==w: return 1 return -1 def solution(n, words): for i in range(1, len(words)): if words[i-1][-1] != words[i][0] or search(words[:i], words[i]) == 1: return [i%n+1, int(i/n)+1] return [0, 0] search 함수: 앞 사람이 말한 단어와 같은 단어를 말한 경우를 찾는 함수 - for문을 이용하여 현재 탐색하는 단어의 위치를 제외한 words 내의 단어들과 탐색하고자 하는 단어를 비교했을 때 같은 단어가 있으면 1을 반환..
[프로그래머스/python] 코딩테스트 연습 Lv.2 점프와 순간 이동 문제 입출력 예 Solution def solution(n): ans = 0 while(n!=0): if n%2 == 0: n = n/2 elif n%2 == 1: n = n-1 ans = ans+1 return ans 이동하려는 거리 n에 대하여 (현재까지 온 거리) x 2에 해당하는 위치로 순간이동을 하는 경우가 건전지 사용을 하지 않는다. 따라서 n이 짝수인 경우는 2로 나누어주고, 2로 나누지 못하는 경우(홀수)에는 한 칸 전진해주고 그만큼 건전지를 1만큼 사용하는 것이므로 ans에 1을 더해준다. 이를 n이 0 즉, 이동하려는 거리를 모두 이동했을 때 건전지 사용량(ans)를 return해준다.

728x90