목록Python (208)
홍우진의 개발 일기장
문제 링크https://www.acmicpc.net/problem/7567풀이 코드temp, tot = "", 0for i in list(input()): if i != temp: tot += 10 temp = i else: tot += 5print(tot)코드 해석 그릇을 리스트화 시킨 다음하나씩 빼서 전 그릇과 비교하며tot에 추가한다. 체감 난이도: ★☆☆☆☆
문제 링크https://www.acmicpc.net/problem/10974 풀이 코드n = int(input())li = []def dfs(): if len(li) == n: print(*li) return for i in range(1, n + 1): if i not in li: li.append(i) dfs() li.pop()dfs()코드 해석파이썬 순열함수 itertools.permutations를 사용하는 방법이 있지만DFS 알고리즘으로 풀었다. DFS 알고리즘이란? -> https://gmlwjd9405.github.io/2018/08/14/algorithm-dfs.html [알고리즘] ..
문제 링크https://www.acmicpc.net/problem/5648풀이 코드import sysinput = sys.stdin.readn, *num = input().split()for i in range(int(n)): num[i] = num[i][::-1]s = list(map(int, num))print(*sorted(s), sep="\n")코드 해석수를 받는다(*num -> 정해지지 않은 양의 수를 받을 때 사용)거꾸로 저장오름차순 정렬 후 출력 체감 난이도: ★★☆☆☆
문제 링크https://www.acmicpc.net/problem/1075 풀이 코드n = int(input())f = int(input())dap = (n // 100) * 100while dap % f != 0: dap += 1print(str(dap)[-2:])코드 해석브루트포스를 사용한다.몫을 *100을 한 후 f 로 나누어지지 않을 때 까지 더한다. 체감 난이도: ★☆☆☆☆
문제 링크https://www.acmicpc.net/problem/1834풀이 코드n = int(input())sum = 0for i in range(n): sum += n * i + iprint(sum)코드 해석N * 몫 + 나머지 = 나머지와 몫이 같은 자연수N * i + i = 나머지와 몫이 같은 자연수 체감 난이도: ★☆☆☆☆
문제 링크https://www.acmicpc.net/problem/14425 풀이 코드n, m = map(int,input().split())s = {}cnt = 0for _ in range(n): s[input()] = 0for _ in range(m): if input() in s: cnt += 1print(cnt)코드 해석처음 그냥 리스트 형식으로 사용하였을때 성공은 했지만 시간이 너무 느리게 나왔었다.그래서 hash table 방식을 사용하였다.hash table은 key에 데이터를 저장하는 구조이며 key를 통해 데이터를 받아오기 때문에 빠르다.dict와 set은 hash table 구조를 사용한다. 체감 난이도: ★★☆☆☆코딩은 쉽지만 hash table은 어렵다
문제 링크https://www.acmicpc.net/problem/2167풀이 코드import sysinput = sys.stdin.readlinen, m = map(int,input().split())arr = [list(map(int,input().split())) for _ in range(n)]k = int(input())do = [list(map(int,input().split())) for _ in range(k)]dp = [[0 for i in range(m+1)] for _ in range(n+1)]for i in range(1,n+1): for j in range(1,m+1): dp[i][j] = dp[i-1][j] + dp[i][j-1] + arr[i-1][j-1] -..
문제 링크https://www.acmicpc.net/problem/2870 풀이 코드dap = []for _ in range(int(input())): m = '' for i in input(): if i.isdigit(): m += i else: if m != '': dap.append(int(m)) m = '' if m != '': dap.append(int(m))for i in sorted(dap): print(i)코드 해석파싱 문제이다.isdigit을 사용하면 들어온 문자열이 숫자인지 아닌지 알 수 있다. 체감 난이도: ★☆☆☆☆