Python50 [프로그래머스] n진수 게임 / 파이썬 / Python / 2018 KAKAO BLIND RECRUITMENT 💡solutions ) 💬 진수 변환을 잘 몰랐는데 이번 문제 풀면서 정확히 알게 됐다. 해당 진수로 숫자를 나누며 나머지를 누적하는 방식. 💬 진수 변환 함수는 재귀로도 풀 수 있는데 이번에는 while 반복문을 이용해서 구했고, 이때 0인 경우를 빼먹지 않기 위해 if조건문을 넣어야 한다. 💬 solution 함수에서 두 가지 for문 ① 첫 번째는 t*m까지의 숫자를 진수 변환 해주는 것. ② 두 번째는 튜브가 말해야 하는 숫자만 찾는 것. 🎫code ) def change(num, n): numbers = '0123456789ABCDEF' r = '' if num == 0: return '0' while num > 0: r = numbers[num % n] + r num = num // n ret.. 2020. 9. 27. [프로그래머스] 영어 끝말잇기/ 파이썬 / Python/ Summer/Winter Coding(~2018)/ 카카오 코테 💡solutions ) 💬 로직은 크게 끝말잇기가 유효한지 for문을 돌며 확인 -> 불가능한 경우는 총 2가지(이미 말한 단어를 다시 말한 경우와 앞단어의 마지막과 뒷단어의 첫 번째가 같지 않은 경우) * 번호와 차례를 구할 때는 아랫처럼 구하고자 하는 정확한 값이 나오도록 덧셈 처리 💬 번호를 나타내는 idx는 i를 n으로 나눈 나머지에 +1를 해주기 💬 차례를 나타내는 cnt는 n의 배수 번째인지 아닌 지에 따라 분기 처리해야 함 🎫code ) def solution(n, words): tmp = [words[0]] # 첫 번째 단어는 먼저 넣고 시작 for i in range(1, len(words)): # 두 번째 단어부터 시작해서 끝말잇기 유효한지 확인 if words[i - 1][-1] !=.. 2020. 9. 25. [프로그래머스] 캐시/ 파이썬/ Python/ deque/ LRU / 2018 KAKAO BLIND RECRUITMENT /카카오 코테 💡solutions ) LRU(Least Recently Used) 알고리즘 : 가장 최근에 사용되지 않은 것이라는 의미로, 오랫동안 사용하지 않았던 데이터는 앞으로도 사용할 확률이 적다는 것이다. 이는 한정된 캐시 사이즈가 꽉 차고 새로운 캐시를 넣으려고 할 때, 기존 캐시 중 최근까지 가장 사용되지 않은 데이터를 제거하는 알고리즘이다. 💬 첫 번째 if문 -> cacheSize가 0인 경우 참조하는 값이 없으므로 cities 모든 요소가 cache miss로 실행시간이 5이다. 💬 대소문자 구분하지 않으니 모두 소문자로 처리 -> lower() 메소드 💬 for문 -> 각 city가 buffer에 있는 지 확인하는데 ① 없는 경우 buffer가 cacheSize만큼 꽉 차 있는 지 확인한다. - ca.. 2020. 9. 24. [프로그래머스] 올바른 괄호 /파이썬 /Python 💡solutions ) 💬 반복문에서 나온 괄호가 "( " 괄호면 stack에 넣고, ")"가 나오면 stack의 맨 마지막 요소가 "("괄호로 맞는 지 확인하고 짝이 맞는 경우 맨 마지막 요소인 "("를 pop으로 제거한다. 즉, "("와")"가 만날 때만 stack에서 "("제거 💬 단, stack이 비어있을 때 나온 요소가 ")"이면 올바르지 않은 괄호이니 바로 False를 리턴한다. 💬 그 아래 참고로 가져온 코드는 괄호 종류가 두개이니 "("인 경우 +1, ")"인 경우 -1을 하여 최종 결과값이 0이 되는지 확인하는 로직이다. 🎫code ) ✔ 나의 풀이 def solution(s): stack = [] for i in range(len(s)): if not stack and s[i] == '.. 2020. 9. 18. [프로그래머스] 숫자의 표현 /파이썬 /Python 💡solutions ) 💬 n이 주어진 경우 n//2까지만 확인하면 된다. 문제에서 주어진 예시처럼 n이 15인 경우에 7까지만 연속된 숫자를 확인할 수 있고, 8인 경우는 그 다음 숫자를 더하면 15를 초과하므로 불포함이기 때문에 확인할 필요가 없다. 💬 숫자 n 하나도 경우의 수에 포함되므로 answer은 1부터 시작한다. 🎫code ) def solution(n): answer = 1 for i in range(1, n//2+1): tmp = 0 for j in range(i, n//2+2): tmp += j if tmp > n: break if tmp == n: answer += 1 break return answer 📌 description ) 문제출처 : programmers.co.kr/lea.. 2020. 9. 18. [프로그래머스] 큰 수 만들기/ 파이썬/ Python / Stack 💡solutions ) 💬 이미 k개 만큼의 숫자 삭제를 완료한 경우에는 s 스택에 모두 넣기 💬 첫번째 숫자는 먼저 넣고 시작하며, while문 안에서 s 스택에 넣어야 하는 숫자(i)와 기존 s 스택에 담겨있는 숫자들의 크기를 비교하기 -> i가 기존 숫자보다 크면 기존 숫자 제거(pop하고 cnt +1) 💬 이미 k개를 모두 삭제하거나 i가 기존 숫자보다 작거나 같은 경우에는 break를 걸어 while문 중단 💬 숫자를 다 넣었는데 아직 제거해야 할 k가 남아 있는 경우, 맨 뒤에서부터 pop으로 남은 k개수 만큼 숫자 삭제 💬 참고로 나의 경우 첫 시도에선 마지막 12번 케이스 통과하지 못 했고, 아래 두 가지 테스트케이스를 넣어 코드를 수정한 후 통과할 수 있었다. # 12번 대비 테스트케이스.. 2020. 9. 15. 이전 1 2 3 4 5 6 7 8 9 다음