공부/📝 프로그래머스(126)
-
합성수 찾기 - Python
def solution(n): prime_set = {0, 1, 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 4..
2023.09.24 -
2차원으로 만들기 - Python
def solution(num_list, n): answer = [] for i in range(0, len(num_list), n): temp = [] for j in range(i, i + n): temp.append(num_list[j]) answer += [temp] return answer # Test Cases print(solution([1, 2, 3, 4, 5, 6, 7, 8], 2)) 이렇게 풀었습니다. def solution(num_list, n): answer = [] for i in range(0, len(num_list), n): answer.append(num_list[i:i+n]) return answer 그런데 저보다 훨씬 좋은 풀이가 있네요. 프로그래머스: https://s..
2023.09.22 -
구슬을 나누는 경우의 수 - Python
def factorial(n, m): num = 1 while n >= m: num *= n n -= 1 return num def solution(balls, share): numerator = factorial(balls, 1) denominator = factorial(share, 1) * factorial(balls - share, 1) answer = numerator / denominator return answer # Test Cases print(solution(3, 2)) print(solution(5, 3)) 이전에 비슷하게 짰었는데 한번 틀렸었습니다. 그 이유는 위의 코드에서는 현재 numerator와 denominator로 나누어서 계산하지만, 이전에는 한번에 합쳐서 계산했더니 문제..
2023.09.22 -
가위 바위 보 - Python
def solution(rsp): rsp = rsp.replace("2", "영") rsp = rsp.replace("0", "오") rsp = rsp.replace("5", "이") rsp = rsp.replace("영", "0") rsp = rsp.replace("오", "5") rsp = rsp.replace("이", "2") return rsp # Test Cases print(solution("2")) print(solution("205")) 제 풀이는 위와 같습니다. def solution(rsp): d = {'0':'5','2':'0','5':'2'} return ''.join(d[i] for i in rsp) 딕셔너리와 join()을 쓰면 이렇게 가능한데 이걸 또 잊었네요. def solu..
2023.09.22 -
모스부호 (1) - Python
def solution(letter): answer = '' morse = { '.-':'a','-...':'b','-.-.':'c','-..':'d','.':'e','..-.':'f', '--.':'g','....':'h','..':'i','.---':'j','-.-':'k','.-..':'l', '--':'m','-.':'n','---':'o','.--.':'p','--.-':'q','.-.':'r', '...':'s','-':'t','..-':'u','...-':'v','.--':'w','-..-':'x', '-.--':'y','--..':'z' } morse_list = letter.split(" ") for item in morse_list: temp = morse[item] answer += ..
2023.09.22 -
개미 군단 - Python
def solution(hp): answer = hp // 5 hp = hp % 5 answer += hp // 3 hp = hp % 3 answer += hp return answer # Test Cases print(solution(23)) print(solution(24)) print(solution(999)) C언어로 풀던 대로 했습니다. def solution(hp): answer = 0 for ant in [5, 3, 1]: d, hp = divmod(hp, ant) answer += d return answer 이렇게 세련된 풀이도 있네요. 본받을 점이 있습니다. 프로그래머스: https://school.programmers.co.kr/learn/courses/30/lessons/120837..
2023.09.22 -
배열의 유사도 - Python
def solution(s1, s2): answer = 0 for item1 in s1: for item2 in s2: if item1 == item2: answer += 1 return answer # Test Cases print(solution(["a", "b", "c"], ["com", "b", "d", "p", "c"])) print(solution(["n", "omg"], ["m", "dot"])) 시간 복잡도는 O(N*M)입니다. def solution(s1, s2): return len(set(s1)&set(s2)) 비트연산자를 통해 잘 푼 것 같습니다. 시간 복잡도는 O(N + M + min(N, M))입니다. 프로그래머스: https://school.programmers.co.kr/le..
2023.09.21