Loading...

[Python] LeetCode - Letter Combinations of a Phone Number

https://leetcode.com/problems/letter-combinations-of-a-phone-number/ Letter Combinations of a Phone Number - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com # 외국 문제풀이 사이트인 LeetCode문제이다. 영어문제를 해석하면서 풀어야해서 영어실력 증진에도 도움이 되는 것 같다. # '백트래킹' 기초를 연습하기 위해 푼 문제이다. # class와 letterCombination..

[Python] 프로그래머스 - 도둑질

https://programmers.co.kr/learn/courses/30/lessons/42897 코딩테스트 연습 - 도둑질 도둑이 어느 마을을 털 계획을 하고 있습니다. 이 마을의 모든 집들은 아래 그림과 같이 동그랗게 배치되어 있습니다. 각 집들은 서로 인접한 집들과 방범장치가 연결되어 있기 때문에 인접한 programmers.co.kr # 5단계 문제라서 손을 안대고 있었는데, 내가 생각했던 '5단계'의 난이도는 아니었다.. # 16~20줄에서 dp테이블을 갱신하는 원리는 다음과 같다. i번째 집을 털 때 최댓값(dp[i])은 아래 두가지 케이스 중 큰 값이다. 1. (i-2)번째 집을 털고 현재 i번째 집을 터는경우 (dp[i-2] + money[i]) 2. i번째 집을 턴 경우(현재 i번째 ..

[Python] 프로그래머스 - 가장 큰 수

https://programmers.co.kr/learn/courses/30/lessons/42746 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr # 조건을 제대로 읽지 않아 엄청 어렵게 생각했던 문제이다. 처음에 정렬하는 방법은 제대로 생각했다. (가장 큰 숫자의 자리수에 맞춰 나머지 숫자들의 자리수를 맞춘다음 정렬하는 것) # 여기서 numbers의 원소가 0이상 1000이하라고 되어있는데, 이걸 읽지 않아서 가장 일일이 가장 큰 숫자의 ..

[Python] 프로그래머스 - n진수 게임

https://programmers.co.kr/learn/courses/30/lessons/17687 코딩테스트 연습 - [3차] n진수 게임 N진수 게임 튜브가 활동하는 코딩 동아리에서는 전통적으로 해오는 게임이 있다. 이 게임은 여러 사람이 둥글게 앉아서 숫자를 하나씩 차례대로 말하는 게임인데, 규칙은 다음과 같다. 숫자를 0 programmers.co.kr 2018 카카오 블라인드 코딩테스트에 출제된 문제이다. # 이 문제를 풀기위한 keyPoint는 다음과 같다. 1. convert함수를 통해 원하는 수를 원하는 진법으로 변경해줘야 한다. 2. 마지막 answer를 출력할땐 튜브의 차례에 해당하는 수만 뽑아낼 수 있어야 한다. # 20번째 줄에서 l이 10만 이상일때 break해주는 이유: t가 ..

[Python] 프로그래머스 - 파일명 정렬

https://programmers.co.kr/learn/courses/30/lessons/17686 코딩테스트 연습 - [3차] 파일명 정렬 파일명 정렬 세 차례의 코딩 테스트와 두 차례의 면접이라는 기나긴 블라인드 공채를 무사히 통과해 카카오에 입사한 무지는 파일 저장소 서버 관리를 맡게 되었다. 저장소 서버에는 프로그램 programmers.co.kr 2018 카카오 블라인드 코딩테스트에 출제된 문제이다. # 문제가 복잡해보이고 정렬해야 할 것도 많아보이지만, head와 number만 잘 파싱해서 추출한 다음 정렬하면 되는 문제이다. # 카카오는 re모듈을 이용해 문자열을 파싱하는 문제가 많이 나오는 것 같다. import re def solution(files): answer = [] file =..

[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 # 전에 포스팅한 '방금그곡'과 같이 2018 카카오 블라인드 코딩테스트에 출제된 문제이다. 생각한 아이디어대로 짜봤는데 바로 통과되어서 놀랐다. # 4번째 줄처럼 dic을 선언하는 방식을 알게 되었고, 다른 사람들의 풀이를 보니 zip함수를 사용해 아래와 같이 선언하는 방법도 있다는 것도 알게 되었다. " dic= dict(zip("ABCDEFGHIJKLMNOPQRSTUVWXYZ",..

[Python] 프로그래머스 - 방금그곡

https://programmers.co.kr/learn/courses/30/lessons/17683 코딩테스트 연습 - [3차] 방금그곡 방금그곡 라디오를 자주 듣는 네오는 라디오에서 방금 나왔던 음악이 무슨 음악인지 궁금해질 때가 많다. 그럴 때 네오는 다음 포털의 '방금그곡' 서비스를 이용하곤 한다. 방금그곡에서는 TV, programmers.co.kr 2018 카카오 블라인드 코딩테스트 문제이다. 문제 지문이 길어서 문제 이해하는데도 오래걸렸고 문자열 처리가 꽤 까다로웠다. # 테스트케이스 2개가 자꾸 틀려서 꽤 시간을 잡아먹었는데, 알고보니 20~24줄 재생시간 구하는 알고리즘 때문이었다. # change함수처럼 #붙은 음들을 어떻게 처리해야하는지 아이디어와 실제로 구현하는 데도 시간이 많이 소..

2021. 5. 18. 23:04

피보나치 수열의 시간복잡도는 왜 θ(1.618의 N제곱)일까

# 최근에 나동빈 저자의 "이것이 취업을 위한 코딩테스트다 with 파이썬"를 보다가 궁금증이 생겼다. 예전에 문제풀 때는 일단 실력을 끌어 올리는 것에 중점을 둬서 그냥 외우고 넘어갔지만, 다시 한번 복습하는 차원에서 여유롭게 읽어보니 깊게 생각해 봐도 될 부분들이 많았다. # 다이나믹 프로그래밍 Chapter에서 단골손님으로 나오는 '피보나치 수열'에서 피보나치 수열의 시간복잡도가 정확히 따지면 θ(1.618...N)이라는 것이다. 일반적으로 피보나치 수열의 시간복잡도는 세타 표기법으로 표시하지 않고 빅오 표기법으로 O(2N)으로 표시를 한다. # 궁금해서 인터넷을 찾아보니 피보나치 수열의 일반항 Fn을 다음과 같이 나타낼 수 있다. # 증명은 아래와 같은데, 증명까지 외울 필요는 없고 그냥 왜 이런..