[Programmers] Lv2. 더 맵게 문제 바로가기 코딩테스트 연습 - 더 맵게 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같 programmers.co.kr 풀이 heapq를 사용하여 풀었다. 기존의 scoville배열을 heapify를 사용해 heap구조로 바꿔주고, scoville의 원소가 다 사라질 때까지 반복 만약 scoville의 원소가 다 사라져야 반복문이 종료된다면 모든 음식의 스코빌 지수가 K 이상이 될 수 없으므로 -1 그렇지 않다면, scoville의 첫 번째 원소가 K 이상이라면 답을 리턴한다. 이 과정에서 일단 첫 원소를 빼내고, 만약 두 번째 원소가 존재한다면 두 번.. 2021. 5. 24.
[Programmers] Lv2. 오픈채팅방 문제 바로가기 코딩테스트 연습 - 오픈채팅방 오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오 programmers.co.kr 풀이 먼저, record를 돌면서 들어오거나 변경되는 유저의 아이디와 닉네임을 딕셔너리에 저장하는 과정을 거침 그러면 변경된 이름도 적용되어 있기 때문에, 다시 배열을 돌면서 Enter와 Leave에 해당하는 메시지를 남길 수 있음 코드 def solution(record): answer=[] nickname = {} for i in [i.split(' ') for i in record]: if i[0] != 'Leave': nickname[i[1.. 2021. 5. 24.
[Programmers ] Lv2. 타겟 넘버 문제 바로가기 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+ programmers.co.kr 풀이 dfs함수를 통해 인덱스를 증가시키면서 2번의 재귀를 진행(-, +)하고, 만약 idx가 배열의 끝까지 진행되어서 원하는 값이 나왔다면 answer에 추가 코드 answer = 0 def dfs(numbers, target, idx, sum): global answer if idx == len(numbers): if sum == target: answer += 1 return dfs(num.. 2021. 5. 24.
[Programmers] Lv2. 기능개발 문제 바로가기 코딩테스트 연습 - 기능개발 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 programmers.co.kr 코드 def solution(progresses, speeds): answer = [] stack = [round((100 - progresses[0]) / speeds[0] + 0.5)] for i in range(1, len(progresses)): if stack[-1] >= round((100 - progresses[i]) / speeds[i] + 0.5): stack.append(stack[-1]) else: answer.appen.. 2021. 5. 20.
[Programmers] Lv2. 짝지어 제거하기 문제 바로가기 코딩테스트 연습 - 짝지어 제거하기 짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙 programmers.co.kr 풀이 stack에 쌓고, stack에 요소가 존재하면 stack의 마지막요소와 비교해서 똑같을 경우만 stack에서 제거해줌 그리고 stack에 요소가 마지막에도 존재하면 0, 존재하지 않으면 1(가능)을 리턴 코드 def solution(s): stack = [] for i in s: if stack and i == stack[-1]: stack.pop() else: stack.append(i) return 0 if stack els.. 2021. 5. 20.
[Programmers] Lv2. 124 나라의 숫자 문제 바로가기 코딩테스트 연습 - 124 나라의 숫자 programmers.co.kr 풀이 규칙성은 3으로 나눴을 때 나머지가 0이면 4, 1이면 1, 2이면 2를 반환한다. 그래서 rule을 ["4", "1", "2"]순으로 두고, n이 존재할 때까지 반복문을 돌린다. n을 3으로 나누고, 나눈 몫을 n으로 두고 나머지를 m으로 둔다. 그리고 rule[m]에 해당하는 값을 answer의 앞자리에 더해준다. 만약 m이 나머지가 0이면 n을 1 감소시켜 준다.(m이 3이라는 의미) 코드 def solution(n): answer = '' rule = ["4", "1", "2"] while n: n, m = n // 3, n % 3 answer = rule[m] + answer if not m: n -= 1.. 2021. 5. 20.
[Programmers] Lv2. 멀쩡한 사각형 문제 바로가기 코딩테스트 연습 - 멀쩡한 사각형 가로 길이가 Wcm, 세로 길이가 Hcm인 직사각형 종이가 있습니다. 종이에는 가로, 세로 방향과 평행하게 격자 형태로 선이 그어져 있으며, 모든 격자칸은 1cm x 1cm 크기입니다. 이 종이를 격자 선을 programmers.co.kr 풀이 전체 면적에서 가로로 가는길(w)과 세로로 가는길(h)를 한 번씩 빼주고 겹치는 구간인 w, h의 최대공약수를 더해줌 gcd는 최대공약수를 구하는 함수로 w를 h로 나눴을 때 나머지가 없을 때까지 나누는 과정을 반복 코드 def gcd(w, h): while w % h: w, h = h, w % h return h def solution(w,h): return w * h - w - h + gcd(w, h) 2021. 5. 20.
[Programmers] Lv1. 최대공약수와 최소공배수 문제 바로가기 코딩테스트 연습 - 최대공약수와 최소공배수 두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 programmers.co.kr 풀이 gcd는 최소공배수 구하는 함수 최대공약수는 (a * b)/gcd(a, b) 코드 def gcd(n, m): while n % m: n, m = m, n % m return m def solution(n, m): if n > m: n, m = m, n return [gcd(n, m), n * m / gcd(n, m)] 2021. 5. 15.
[Programmers] Lv1. 짝수와 홀수 문제 바로가기 코딩테스트 연습 - 짝수와 홀수 정수 num이 짝수일 경우 "Even"을 반환하고 홀수인 경우 "Odd"를 반환하는 함수, solution을 완성해주세요. 제한 조건 num은 int 범위의 정수입니다. 0은 짝수입니다. 입출력 예 num return 3 "Odd" 4 "Even" programmers.co.kr 코드 def solution(num): if num % 2: return "Odd" return "Even" 2021. 5. 15.
반응형