공부/📝 프로그래머스(126)
-
명예의 전당(1) - Python
1. 풀이 코드 def solution(k, score): answer = [] output = [] for _ in range(k): answer.append(-1) for item in score: if answer[0] k): q.remove(min(q)) answer..
2023.11.17 -
추억 점수 - Python
1. 풀이 코드 def solution(name, yearning, photo): answer = [] for check_list in photo: temp_sum = 0 for target, score in zip(name, yearning): if target in check_list: temp_sum += score answer.append(temp_sum) return answer print(solution(["may", "kein", "kain", "radi"], [5, 10, 1, 3], [["may", "kein", "kain", "radi"],["may", "kein", "brin", "deny"], ["kon", "kain", "may", "coni"]])) print(solution([..
2023.11.17 -
콜라 문제 - Python
1. 풀이 코드 def solution(a, b, n): answer = 0 while n >= a: temp = n // a * b answer += temp n = n % a + temp return answer # Test Cases print(solution(2, 1, 20)) print(solution(3, 1, 20)) 중간에 받는 병은 temp에 저장하여 차근차근 풀었습니다. 2. 다른 사람 풀이 코드 solution = lambda a, b, n: max(n - b, 0) // (a - b) * b 수학적 계산을 잘 하네요. 프로그래머스: https://school.programmers.co.kr/learn/courses/30/lessons/132267 프로그래머스 코드 중심의 개발자 채용..
2023.10.21 -
예상 대진표 - Python
1. 풀이 코드 def solution(n, a, b): a = f"{a - 1:020b}" b = f"{b - 1:020b}" answer = 20 for i, j in zip(a, b): if i == j: answer -= 1 else: break return answer # Test Cases print(solution(8, 4, 7) == 3) print(solution(8, 4, 8) == 3) 위와 같이 풀었습니다. 수학적 원리는 아래와 같습니다. 특징을 잡아내기 위해 -1 프로세싱을 했습니다. 이런 상태에서 2로 나누면 몫이 일정하게 나옴을 확인할 수 있습니다. 다시 똑같은 과정이 진행되기에 반복문으로 진행할 수 있습니다. 이럴 때에 2로 나눈 다는 것은 비트시프트를 하는 과정과 같으므로 ..
2023.10.18 -
점프와 순간 이동 - Python
1. 풀이 코드 def solution(n): ans = 0 while n != 0: if n % 2 == 0: n //= 2 else: n -= 1 ans += 1 return ans # Test Cases print(solution(5) == 2) print(solution(6) == 2) print(solution(5000) == 5) 위와 같이 풀었습니다. 2. 다른 사람 풀이 코드 def solution(n): return bin(n).count('1') 정말 멋있네요. 2를 곱하거나 나누는 행동은 비트시프트와 같다는 점을 기억해야겠습니다. 프로그래머스: https://school.programmers.co.kr/learn/courses/30/lessons/12980 프로그래머스 코드 중심의 개..
2023.10.17 -
푸드 파이트 대회 - Python
1. 풀이 코드 def solution(food): answer = '' for i in range(1, len(food)): answer += f"{i}" * (food[i] // 2) return answer + "0" + answer[::-1] # Test Cases print(solution([1, 3, 4, 6]) == "1223330333221") print(solution([1, 7, 1, 2]) == "111303111") 간단하게 풀었습니다. 2. 다른 사람 풀이 코드 1) 진짜로 앞뒤에 붙인 사람 def solution(food): answer ="0" for i in range(len(food)-1, 0,-1): c = int(food[i]/2) while c>0: answer = s..
2023.10.17 -
K번째수 - Python
1. 풀이 코드 def solution(array, commands): answer = [] for item in commands: temp = array[item[0] - 1:item[1]] temp.sort() answer.append(temp[item[2] - 1]) return answer # Test Cases print(solution([1, 5, 2, 6, 3, 7, 4], [[2, 5, 3], [4, 4, 1], [1, 7, 3]])) 차근차근 풀었습니다. 2. 다른 사람 풀이 코드 def solution(array, commands): return list(map(lambda x:sorted(array[x[0]-1:x[1]])[x[2]-1], commands)) 한 줄로 표현하다니 대단하..
2023.10.17