본문 바로가기

Programming207

[프로그래머스] 숫자의 표현 (Python) https://programmers.co.kr/learn/courses/30/lessons/12924 코딩테스트 연습 - 숫자의 표현 Finn은 요즘 수학공부에 빠져 있습니다. 수학 공부를 하던 Finn은 자연수 n을 연속한 자연수들로 표현 하는 방법이 여러개라는 사실을 알게 되었습니다. 예를들어 15는 다음과 같이 4가지로 표현 할 programmers.co.kr 나의 풀이 def solution(n): answer = 1 for i in range(1,n//2+1): check = i for j in range(i+1,n-i+1): check+=j if check == n: answer += 1 elif check > n: break return answer 2021. 11. 7.
[프로그래머스] 땅따먹기 (Python) https://programmers.co.kr/learn/courses/30/lessons/12913 코딩테스트 연습 - 땅따먹기 땅따먹기 게임을 하려고 합니다. 땅따먹기 게임의 땅(land)은 총 N행 4열로 이루어져 있고, 모든 칸에는 점수가 쓰여 있습니다. 1행부터 땅을 밟으며 한 행씩 내려올 때, 각 행의 4칸 중 한 칸만 밟 programmers.co.kr DP 유형의 문제다. dp[i][j] 는 (i , j)의 위치에서 가장 큰 경우다. 나의 풀이 def solution(land): dp = [[0]*4 for _ in range(len(land))] for i in range(4): dp[0][i] = land[0][i] for i in range(1,len(land)): for j in r.. 2021. 11. 7.
[프로그래머스] 다음 큰 숫자 (Python) https://programmers.co.kr/learn/courses/30/lessons/12911 코딩테스트 연습 - 다음 큰 숫자 자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의 합니다. 조건 1. n의 다음 큰 숫자는 n보다 큰 자연수 입니다. 조건 2. n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 갯수가 같습니 programmers.co.kr bin을 활용해서 풀면 된다. 나의 풀이 def solution(n): one_count = bin(n).count('1') n+=1 while n: if one_count == bin(n).count('1'): return n else: n+=1 2021. 11. 7.
[프로그래머스] n진수 게임 (Python) https://programmers.co.kr/learn/courses/30/lessons/17687 코딩테스트 연습 - [3차] n진수 게임 N진수 게임 튜브가 활동하는 코딩 동아리에서는 전통적으로 해오는 게임이 있다. 이 게임은 여러 사람이 둥글게 앉아서 숫자를 하나씩 차례대로 말하는 게임인데, 규칙은 다음과 같다. 숫자를 0 programmers.co.kr 1. 튜브가 말해야 하는 순서를 구한다 (p + m * i ) 단, 0 0: n , mod = divmod(n,q) if mod >=10: base += num_dict[mod] else: base += str(mod) return base[::-1] def solution(n, t, m, p): answer = '' turn_list = [(p.. 2021. 11. 7.
[프로그래머스] 파일명 정렬 (Python) https://programmers.co.kr/learn/courses/30/lessons/17686 코딩테스트 연습 - [3차] 파일명 정렬 파일명 정렬 세 차례의 코딩 테스트와 두 차례의 면접이라는 기나긴 블라인드 공채를 무사히 통과해 카카오에 입사한 무지는 파일 저장소 서버 관리를 맡게 되었다. 저장소 서버에는 프로그램 programmers.co.kr 정규표현식을 활용해서 문제를 풀면 된다. 자주 사용되는 정규표현식은 미리미리 숙달해놔야겠다. import re from collections import defaultdict def solution(files): answer = [] head = re.compile('^\D+') number = re.compile('\d{1,5}') # tail = .. 2021. 11. 7.
[프로그래머스] 압축 (Python) https://programmers.co.kr/learn/courses/30/lessons/17684 코딩테스트 연습 - [3차] 압축 TOBEORNOTTOBEORTOBEORNOT [20, 15, 2, 5, 15, 18, 14, 15, 20, 27, 29, 31, 36, 30, 32, 34] programmers.co.kr 주어진 조건대로 구현하면 된다. from collections import defaultdict def solution(msg): alphabet ='ABCDEFGHIJKLMNOPQRSTUVWXYZ' answer = [] dict = defaultdict(int) for i,alpha in enumerate(alphabet): dict[alpha] = i+1 start, end, va.. 2021. 11. 6.
[프로그래머스] 가장 큰 정사각형 찾기 (Python) https://programmers.co.kr/learn/courses/30/lessons/12905 코딩테스트 연습 - 가장 큰 정사각형 찾기 [[0,1,1,1],[1,1,1,1],[1,1,1,1],[0,0,1,0]] 9 programmers.co.kr 전형적인 DP 문제다. DP를 만족하기 위해서 1. 최적 부분 구조 (Optimal Substructure) - 큰 문제를 작은 문제로 나눌 수 있으며 작은 문제의 답을 모아서 큰 문제를 해결할 수 있다. 2. 중복되는 부분 문제 (Overlapping Subproblem) - 동일한 작은 문제를 반복적으로 해결해야 한다. 이 정사각형 문제도 위의 두 조건을 만족한다. 처음엔 완전 탐색으로 풀었는데, 효율성 테스트에서 시간 초과가 나서 생각해보니 dp로.. 2021. 11. 6.
[프로그래머스] 방금 그곡 (Python) https://programmers.co.kr/learn/courses/30/lessons/17683 코딩테스트 연습 - [3차] 방금그곡 방금그곡 라디오를 자주 듣는 네오는 라디오에서 방금 나왔던 음악이 무슨 음악인지 궁금해질 때가 많다. 그럴 때 네오는 다음 포털의 '방금그곡' 서비스를 이용하곤 한다. 방금그곡에서는 TV, programmers.co.kr 내가 짠 알고리즘은 다음과 같다. 1. #들어가 있는 음은 변환 2. 라디오에서의 play_time 계산 3. play_time과 실제 음악 시간과 비교해서 실제 재생된 음악 값으로 변경 4. 네오가 기억하는 멜로디가 실제 재생 된 음악에 있다면 5. 후보군에 이름, 재생된 시간, 입력된 순서 저장 6. 재생된 시간과, 입력된 순서 기준으로 정렬 7.. 2021. 11. 4.
[프로그래머스] 방문 길이 (Python) https://programmers.co.kr/learn/courses/30/lessons/49994 코딩테스트 연습 - 방문 길이 programmers.co.kr set을 활용해서 풀면 된다. 주의해야 할 점은 (0, 0) -> (1, 0)으로 가는 길과 (1, 0) -> (0, 0)으로 가는 길은 동일한 길이다. 나의 풀이 from collections import defaultdict def solution(dirs): answer = 0 load = defaultdict(set) x, y = 0,0 for dir in dirs: if dir =='U': if y+1 -6: load[(x,y)].update([(x,y-1)]) load[(x,y-1)].update([(x,y)]) x,y = x,y-.. 2021. 11. 4.
[프로그래머스] 쿼드 압축 후 개수 세기 (Python) https://programmers.co.kr/learn/courses/30/lessons/68936 코딩테스트 연습 - 쿼드압축 후 개수 세기 [[1,1,0,0],[1,0,0,0],[1,0,0,1],[1,1,1,1]] [4,9] [[1,1,1,1,1,1,1,1],[0,1,1,1,1,1,1,1],[0,0,0,0,1,1,1,1],[0,1,0,0,1,1,1,1],[0,0,0,0,0,0,1,1],[0,0,0,0,0,0,0,1],[0,0,0,0,1,0,0,1],[0,0,0,0,1,1,1,1]] [10,15] programmers.co.kr dp유형의 문제 같다 queue를 이용해서 하향식으로 풀었다. 나의 풀이 from collections import deque def check_all_number(x,y,l.. 2021. 11. 4.
[프로그래머스] n^2 배열 자르기 (Python) https://programmers.co.kr/learn/courses/30/lessons/87390 코딩테스트 연습 - n^2 배열 자르기 정수 n, left, right가 주어집니다. 다음 과정을 거쳐서 1차원 배열을 만들고자 합니다. n행 n열 크기의 비어있는 2차원 배열을 만듭니다. i = 1, 2, 3, ..., n에 대해서, 다음 과정을 반복합니다. 1행 1열부 programmers.co.kr left와 right를 나열해서 쓰다 보면 left 값과 right 값으로 위치를 찾을 수 있다. 이를 통해 풀이하면 된다. 나의 풀이 def solution(n, left, right): answer = [] for i in range(left,right+1): answer.append(max(i//n.. 2021. 11. 4.
[프로그래머스] 점프와 순간 이동(Python) https://programmers.co.kr/learn/courses/30/lessons/12980 코딩테스트 연습 - 점프와 순간 이동 OO 연구소는 한 번에 K 칸을 앞으로 점프하거나, (현재까지 온 거리) x 2 에 해당하는 위치로 순간이동을 할 수 있는 특수한 기능을 가진 아이언 슈트를 개발하여 판매하고 있습니다. 이 아이언 슈 programmers.co.kr Greedy 유형 같긴 하다. 2로 나눠지면 그냥 나누고 안 나눠지면 1을 빼고 정답에는 1씩 더하면 된다. 나의 풀이 def solution(n): answer = 0 while n!=0: if n%2 ==0: n = n//2 else: n -=1 answer+=1 return answer 다른 사람 풀이 def solution(n): .. 2021. 11. 3.
[프로그래머스] 이진 변환 반복하기(Python) https://programmers.co.kr/learn/courses/30/lessons/70129 코딩테스트 연습 - 이진 변환 반복하기 programmers.co.kr 주어진 조건을 그대로 구현하면 된다. def solution(s): deleted_zero, counting = 0,0 while s !='1': deleted_zero += s.count('0') counting+=1 s = bin(s.count('1'))[2:] return [counting,deleted_zero] 2021. 11. 3.
[프로그래머스] 캐시 (Python) https://programmers.co.kr/learn/courses/30/lessons/17680 2021. 11. 3.
[프로그래머스] 모음사전 (Python) https://programmers.co.kr/learn/courses/30/lessons/84512 코딩테스트 연습 - 모음사전 사전에 알파벳 모음 'A', 'E', 'I', 'O', 'U'만을 사용하여 만들 수 있는, 길이 5 이하의 모든 단어가 수록되어 있습니다. 사전에서 첫 번째 단어는 "A"이고, 그다음은 "AA"이며, 마지막 단어는 "UUUUU"입니 programmers.co.kr 사전 규칙에 따라 알고리즘으로 구현하여 풀었다. 풀기 전에 itertools의 product를 떠올리긴 했는데 아직 익숙하지 않아서 그 방식으론 풀지 못했다. 나의 풀이 def change(vowel): next = {'A':'E','E':'I','I':'O','O':'U'} last_word = vowel[-1] .. 2021. 11. 3.