목록Algorithm/Programmers (18)
눈송이의 개발생활
문제 https://programmers.co.kr/learn/courses/30/lessons/42889 내 코드 def solution(N, stages): answer = {} stages.sort() for i in range(1, N + 1): # 스테이지 성공 사람 수 c = stages.count(i) if c == 0: answer[i] = 0 # 스테이지 성공한 사람 수 / 스테이지 모든 사람 수 else: answer[i] = c / len(stages) # 성공한 사람만큼 앞에서부터 stack에서 없애기 for _ in range(c): stages.pop(0) # 딕셔너리 정렬하기 st = dict(sorted(answer.items(), key=lambda item: item[1]..
문제 https://programmers.co.kr/learn/courses/30/lessons/92334 내 코드 def solution(id_list, report, k): # 받을 이메일 개수 answer = {id: 0 for id in id_list} # key = 신고 당함, value : 신고함 r = {id: [] for id in id_list} # 리스트 내 중복되는 값 무시하기 위해서 report = list(set(report)) for i in range(len(report)): user, warn = report[i].split() r[warn].append(user) for item, value in r.items(): if len(value) >= k: for key in v..
문제 https://programmers.co.kr/learn/courses/30/lessons/64061 내 코드 def solution(board, moves): answer = 0 stack = [] for i in range(len(moves)): col = moves[i] - 1 for j in range(len(board)): if board[j][col] != 0: out = board[j][col] board[j][col] = 0 stack.append(out) if len(stack) >= 2: if stack[-1] == stack[-2]: stack.pop() stack.pop() answer += 2 break return answer 다른 사람 풀이 def solution(boar..
문제 https://programmers.co.kr/learn/courses/30/lessons/67256 내 코드 def solution(numbers, hand): answer = '' lhand = 10 rhand = 11 # index == number로 좌표 만들기 points = [(3, 1), (0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2), (3, 0), (3, 2)] for i in numbers: if i in [1, 4, 7]: answer += "L" lhand = i elif i in [3, 6, 9]: answer += "R" rhand = i # 2580 나온 경우 else: ldist = abs(p..
문제 https://programmers.co.kr/learn/courses/30/lessons/81301 내 코드 def solution(s): dict = {"zero": 0, "one": 1, "two": 2, "three": 3, "four": 4, "five": 5, "six": 6, "seven": 7, "eight": 8, "nine": 9} answer = "" temp = "" arr = list(s) for i in range(len(arr)): if arr[i].isdigit(): answer += arr[i] temp = "" else: temp += arr[i] if temp in dict: answer += str(dict[temp]) temp = "" return int(ans..
문제 - 콜라츠 추측 https://programmers.co.kr/learn/courses/30/lessons/12943 내 코드 def solution(num): count = 0 while count 0: t = c % d c, d = d, t answer = [c, int(a*b/c)] return answer 해결 방법 나는 math 모듈에서 gcd()함수를 가져와서 사용했다.(최대공약수 찾아주는 함수) lcm()은 gcd()만 사용하면 금방 만들 수 있어서 쉽게 최소공배수까지 찾을 수 있었다. 다른 사람의 풀이를 보니 유클리드 호제법을 사용해서 풀었다고 하길래 공부해보았다! https://hihellosuah.tistory.com/74 [Algorithm]유클리드 호제법 - 두 수의 최대공약수..
문제 - 정수 제곱근 판별 https://programmers.co.kr/learn/courses/30/lessons/12934 내 코드 def solution(n): sqrt = n**(1/2) if sqrt.is_integer() : return (sqrt+1)**2 else: return -1 다른 사람 풀이 def solution(n): sqrt = n**(1/2) if sqrt % 1 == 0: return (sqrt+1)**2 else: return -1 해결 방법 n에 제곱근을 씌우고 정수로 떨어지는 숫자를 찾을 때 is_integer() 함수를 사용했었다. float type의 수가 정수(int)인지 아닌지 확인할 때 사용하는 함수라고 한다. return 값은 boolean! 다른 사람의 ..
문제 - 짝수와 홀수 https://programmers.co.kr/learn/courses/30/lessons/12937 내 코드 def solution(num): if num % 2 == 0: return "Even" else: return "Odd" 다른 사람 풀이 def solution(num): return num % 2 and "Odd" or "Even" 해결 방법 이 문제를 보면서 프로그래머스 레벨 1 문제들은 코드를 간결하게 쓰는 것을 연습하는 용도이라는 것을 알았다. 쉽게 풀 수 있었지만 다른 사람이 쓴 풀이를 보면 감탄이 나왔다. 어떻게 저렇게 심플하고 예쁘게 코드를 바로 짤 수 있는거지....😮 아래 풀이를 더 설명해보자면, 파이썬은 앞에서부터 논리 연산을 한다고 한다. 예를 들어 n..