목록CodingTest/programmers (96)
기억은 짧고 기록은 길다

Link 코딩테스트 연습 - 숫자의 표현 Finn은 요즘 수학공부에 빠져 있습니다. 수학 공부를 하던 Finn은 자연수 n을 연속한 자연수들로 표현 하는 방법이 여러개라는 사실을 알게 되었습니다. 예를들어 15는 다음과 같이 4가지로 표현 할 programmers.co.kr Solution def solution(n): answer = 1 for i in range(1, n // 2 + 2): t = 0 for j in range(i, n // 2 + 2): t += j if t == n: answer += 1 break if t > n: break return answer 🔑 key point: range(1, n // 2 + 2)

Link 코딩테스트 연습 - 방문 길이 programmers.co.kr Solution 해당 문제의 핵심은 중복되지 않은 길의 개수를 뽑아내는 것이였다. 이에 출발점과 도착점을 기준으로 길을 set()에 넣어 중복되지 않도록 하였다. 또한 출발점과 도착점이 반대가 되더라도 결국은 방문했던 길이므로 set()에 넣을 때 출발점과 도착점을 뒤집은 길 또한 set()에 넣어주었다. def solution(dirs): directions = {'U': (0, 1), 'D': (0, -1), 'L': (-1, 0), 'R': (1, 0)} way = set() x = 0 y = 0 for i in range(len(dirs)): nx = x + directions[dirs[i]][0] ny = y + direct..

Link 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문 programmers.co.kr Solution def solution(s): lens = [] if len(s) == 1: return 1 compact = '' for i in range(1, len(s) // 2 + 1): count = 1 t = s[:i] for j in range(i, len(s), i): if s[j:j + i] == t: count += 1 else: if count == 1: count = '' compact += str(count) + t t ..

Link 코딩테스트 연습 - K번째수 [1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3] programmers.co.kr Solution def solution(land): for i in range(1, len(land)): for j in range(4): land[i][j] = max(land[i - 1][:j] + land[i - 1][j + 1:]) + land[i][j] return max(land[-1]) 🔑 key point: Indexing

Link 코딩테스트 연습 - 더 맵게 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같 programmers.co.kr Solution 해당 문제를 heapq를 사용하지 않고 해결해보려고 했으나 계속 효율성 문제에 걸려 결국 heapq를 사용하였다. heapq에 대한 자세한 설명은 하단 첨부링크를 확인하기 바란다. def solution(scoville, K): answer = 0 scoville.sort() while True: if scoville[0] < K: scoville[1] = scoville[0] + scoville[1] * 2 del scov..

Link 코딩테스트 연습 - 다음 큰 숫자 자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의 합니다. 조건 1. n의 다음 큰 숫자는 n보다 큰 자연수 입니다. 조건 2. n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 갯수가 같습니 programmers.co.kr Solution def solution(n): answer = 0 n2 = bin(n)[2:] count_n = n2.count('1') while True: n += 1 t = bin(n)[2:] count_t = t.count('1') if count_t == count_n: return n 🔑 key point: if count_t == count_n: return n Other Solution def solutio..