본문 바로가기

Algorithm245

[백준] 2467번 - 용액 (파이썬) # 용액 import sys input = sys.stdin.readline N = int(input()) arr = list(map(int, input().split())) left, right = 0, N-1 value = sys.maxsize answer = [] while left < right: if abs(arr[left]+arr[right]) 0: right -= 1 else: break print(*answer) 투포인터 1. 처음과 끝의 인덱스를 left와 right으로 설정 2. left < right 일 동안 - 두 용액 합의 절댓값이 현재 value보다 작거나 같으면 answer에 두 용액, value에 현재 값 - 두 용액의 합이 0보다 작으면 left+=1 - 두 용액의 합이 0.. 2022. 3. 25.
[프로그래머스] Lv1 - 콜라츠 추측 (파이썬) https://programmers.co.kr/learn/courses/30/lessons/12943 코딩테스트 연습 - 콜라츠 추측 1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다. 1-1. 입력된 수가 짝수라면 2 programmers.co.kr def solution(num): cnt = 0 while num != 1: num = num//2 if not num % 2 else num*3+1 cnt += 1 return cnt if cnt < 500 else -1 풀이 1. num이 1이 될 때까지 - 짝수이면 2로 나누기, 홀수이면 3으로 곱하고 1더하기 - cnt 증가.. 2022. 3. 25.
[프로그래머스] Lv1 - 최대공약수와 최소공배수 (파이썬) https://programmers.co.kr/learn/courses/30/lessons/12940 코딩테스트 연습 - 최대공약수와 최소공배수 두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 programmers.co.kr def solution(n, m): answer = [] for i in range(n, 0, -1): if n % i == 0 and m % i == 0: answer.append(i) break return answer+[n*m//answer[0]] 풀이 1. (i = n~1) n과 m이 i로 나누어 떨어지면 최대공약수 2. .. 2022. 3. 25.
[프로그래머스] Lv1 - 짝수와 홀수 (파이썬) https://programmers.co.kr/learn/courses/30/lessons/12937 코딩테스트 연습 - 짝수와 홀수 정수 num이 짝수일 경우 "Even"을 반환하고 홀수인 경우 "Odd"를 반환하는 함수, solution을 완성해주세요. 제한 조건 num은 int 범위의 정수입니다. 0은 짝수입니다. 입출력 예 num return 3 "Odd" 4 "Even" programmers.co.kr def solution(num): return 'Even' if num % 2 == 0 else 'Odd' 풀이 1. 짝수이면 'Even' 홀수이면 'Odd'를 출력 2022. 3. 25.
[프로그래머스] Lv1 - 제일 작은 수 제거하기 (파이썬) https://programmers.co.kr/learn/courses/30/lessons/12935 코딩테스트 연습 - 제일 작은 수 제거하기 정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1 programmers.co.kr def solution(arr): arr.remove(min(arr)) return arr if arr else [-1] 풀이 1. arr에서 최솟값을 제거한다. 2. arr이 비어있으면 [-1]을 아니면 arr을 리턴 2022. 3. 25.
[백준] 16562번 - 친구비 (파이썬) # 친구비 import sys import heapq input = sys.stdin.readline N, M, k = map(int, input().split()) arr = [[]for _ in range(N+1)] moneys = [0]+list(map(int, input().split())) for i in range(1, N+1): arr[0].append((moneys[i], i)) for _ in range(M): a, b = map(int, input().split()) arr[a].append((0, b)) arr[b].append((0, a)) def make_friend(): global answer q = [] heapq.heappush(q, (0, 0)) visited = [Fal.. 2022. 3. 25.
[프로그래머스] Lv1 - 정수 제곱근 판별 (파이썬) https://programmers.co.kr/learn/courses/30/lessons/12934 코딩테스트 연습 - 정수 제곱근 판별 임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다. n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함 programmers.co.kr from math import sqrt def solution(n): x = sqrt(n) return (x+1)**2 if x == int(x) else -1 풀이 1. x에 sqrt(n)의 값을 넣어준다. (n의 제곱근) 2. x와 int(x)가 같다면 (제곱근이 존재) : x+1의 제곱 반환 3. 같지 않다면 (제곱근 존재 X.. 2022. 3. 24.