CS/알고리즘 문제풀이 4

프로그래머스 Lv2 - 영어 끝말잇기

오랜만의 문제 풀이 포스팅. 저번에 프로그래머스 lv1을 모두 정복한 이후 lv1 문제들이 약 13개정도 추가되었었는데, 이것도 다 풀고.. 네이버 부스트캠프 1차를 준비하면서 백준,프로그래머스 하위 레벨 문제들을 양치기로 계속 풀다보니 포스팅보다는 빠르게 계속 푸느라 포스팅을 안했었다. 덕분에 1차를 붙었고, 2차 시험을 준비하면서 LV2 문제를 풀고있었다. 근데 이 문제는 포스팅 안해두면 나중에 내 코드를 절대 이해할 수가 없을 것 같아서 포스팅.. 일단 문제가 좀 길다. 카카오 기출같은 느낌.. def solution(n, words): times = [x % n for x in range(len(words))] wrong = "" ans = [] for i in range(len(words)): ..

프로그래머스 LV2 - 다음 큰 숫자

문제 설명 자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의 합니다. 조건 1. n의 다음 큰 숫자는 n보다 큰 자연수 입니다. 조건 2. n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 갯수가 같습니다. 조건 3. n의 다음 큰 숫자는 조건 1, 2를 만족하는 수 중 가장 작은 수 입니다. 예를 들어서 78(1001110)의 다음 큰 숫자는 83(1010011)입니다. 자연수 n이 매개변수로 주어질 때, n의 다음 큰 숫자를 return 하는 solution 함수를 완성해주세요. 제한 사항 n은 1,000,000 이하의 자연수 입니다. 입출력 예 nresult 78 83 15 23 입출력 예 설명 입출력 예#1 문제 예시와 같습니다. 입출력 예#2 15(1111)의 다음 큰 숫자는..

프로그래머스 LV1 - 키패드 누르기

처음 프로그래머스 사이트를 알고 1단계 가장 맨 위의 문제였다. 보자마자 빤스런 박았다. 그리고 1단계를 이 문제를 제외하고 모두 풀었다... 부딪혀야지 어쩌겠는가? 그리고 keypad = [[1,2,3],[4,5,6],[7,8,9],['*',0,'#']] def get_index(n): for idx1, i in enumerate(keypad): for idx2, j in enumerate(i): if j == n: return [idx1, idx2] return None def solution(numbers, hand): left = ['*'] right = ['#'] ans = [] for finger in numbers: if finger in [1,4,7]: left.append(finger) ..

프로그래머스 LV1 - 모의고사

전에 한번 오지게 도전했다가 실패했던 문제. 하지만 오늘 문득 오? 싶은 해결 방안이 떠올랐고 그 방법으로 풀이 성공 def solution(answers): ans = [0] * 4 a = [1,2,3,4,5] b = [2,1,2,3,2,4,2,5] c = [3,3,1,1,2,2,4,4,5,5] first = a * (len(answers)//5) + a[:(len(answers)%5)] second = b * (len(answers)//8) + b[:(len(answers)%8)] third = c * (len(answers)//10) + c[:(len(answers)%10)] correct1 = [x-y for x,y in zip(first,answers)] correct2 = [x-y for x,..