목록Python (288)
홍우진의 개발새발
문제 링크https://www.acmicpc.net/problem/11637풀이 코드for _ in range(int(input())): who = list(int(input()) for _ in range(int(input()))) m = max(who) if who.count(m) > 1: print('no winner') else: print(f"{['minority', 'majority'][m > sum(who) // 2]} winner {who.index(m)+1}")코드 해석단순 구현 문제다.코드 길이를 줄여보려고 노력해봤다. 체감 난이도: ★☆☆☆☆
문제 링크https://www.acmicpc.net/problem/1735풀이 코드def hoze(a, b): while b > 0: a, b = b, a % b return aa = list(map(int,input().split()))b = list(map(int,input().split()))mo = a[1] * b[1]za = a[0] * b[1] + b[0] * a[1]gong = hoze(za,mo)za //= gongmo //= gongprint(za,mo)코드 해석유클리드 호제법을 사용한다.유클리드 호제법은 최대공약수를 효율적으로 찾는 알고리즘이다. 두 양의 정수 a, b (a > b)에 대하여, a를 b로 나눈 나머지를 r이라고 하면,a와 b의 최대공약수는 b와 r..
문제 링크https://www.acmicpc.net/problem/11727풀이 코드import sysinput = sys.stdin.readlinen = int(input())dp = [0] * 1001dp[0] = 1dp[1] = 3for i in range(2,len(dp)): dp[i] = dp[i-2] * 2 + dp[i-1]print(dp[n-1]%10007)코드 해석DP 문제다.위와같이 직접 그려보며 점화식을 찾았다. 이렇게 풀어도 되는진 모르겠다..찾은 점화식은 다음과 같다.dp[i] = dp[i-2] * 2 + dp[i-1]그대로 코드에 구현하면 끝~! 체감 난이도: ★☆☆☆☆
문제 링크https://www.acmicpc.net/problem/11053풀이 코드n = int(input())a = list(map(int, input().split()))dp = [1] * nfor i in range(1, n): for j in range(i): if a[j] 코드 해석DP 문제다. 위 사진처럼 풀이한다. 체감 난이도: ★★★★☆DP에서 계속 약한 모습을 보여 또 DP를 도전했다.코드는 간단하지만 개념이 너무 어려웠다.
문제 링크https://www.acmicpc.net/problem/9507풀이 코드dp = [0]*68def koong(n): if n 코드 해석오래간만에 DP문제다.문제에 점화식이 주어져 있기 때문에 그대로 따라하면 된다.근데 그냥 풀면 런타임 에러가 난다.따라서, 한번 구한 숫자는 리스트에 저장하여 시간 소모를 줄인다 -> DP 체감 난이도: ★☆☆☆☆점화식이 나와있어서 DP 문제 중 쉬운편 인 것 같다.
문제 링크https://www.acmicpc.net/problem/14626풀이 코드isbn = input()tot = 0zzak = Falsefor i in range(13): if isbn[i] == '*': if i % 2 != 0: zzak = True continue tot += int(isbn[i]) * (3 if i % 2 != 0 else 1) if zzak: for i in range(10): if (tot + (i * 3)) % 10 == 0: print(i)else: print(10 - tot % 10)코드 해석문제를 거꾸로 거슬러 올라가야 한다.일단 전체 코드를 훑어보며 *을 찾는..
문제 링크https://www.acmicpc.net/problem/1551풀이 코드n, k = map(int, input().split())a = list(map(int, input().split(',')))for _ in range(k): b = [] for i in range(len(a) - 1): b.append(a[i+1] - a[i]) a = bprint(','.join(map(str, a)))코드 해석간단한 구현 문제다.문자열 받은 뒤 k만큼 합치고 출력한다. 체감 난이도: ☆☆☆☆☆
문제 링크https://www.acmicpc.net/problem/33664풀이 코드b, n, m = map(int,input().split())item = dict()for _ in range(n): i, p = input().split() item[i] = int(p)for _ in range(m): b -= item[input()]if b >= 0: print("acceptable")else: print("unacceptable")코드 해석 dict를 쓰니 실버5 난이도인데도 쉽게 해결하였다.생일이라 기념으로 생일 백준 풀기...내가 생각해도 미친놈이다 체감 난이도: ★☆☆☆☆