일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 다이나믹 프로그래밍
- Docker 원리
- 수학
- dfs
- lazy evaluation
- Container vs VM
- 모듈러 연산 분배법칙
- error:0308010C:digital envelope routines::unsupported
- 그래프 탐색
- 깊이 우선 탐색
- 최장공통부분수열
- 그래프 이론
- 냅색 알고리즘
- db replication
- 나는 바보야...
- 일단 시도
- LCS 알고리즘
- Python
- 최장공통부분문자열
- bfs
- 클래스
- 동적 계획법
- npm start
- 문자열
- 배낭 문제
- 그래프탐색
- 너비 우선 탐색
- 구현
- 파이썬
- 정처기 필기
- Today
- Total
목록구현 (5)
Save my data
프로그래머스 문제는 정말 오랜만에 푼다. 적응의 문제인지 어떤지 확실하지는 않지만 시간이 좀 걸렸다. 다시 보니 어려운 문제인 것 같지는 않는데 당분간 문제를 많이 풀면서 지켜봐야겠다. def solution(wallpaper): x = len(wallpaper) y = len(wallpaper[0]) lx = x - 1 ly = y - 1 rx = 0 ry = 0 for i in range(x): if "#" in wallpaper[i]: lx = min(lx, i) rx = max(rx, i + 1) for i in range(x): for j in range(y): if wallpaper[i][j] == '#': ly = min(ly, j) ry = max(ry, j + 1) answer = [lx..
요구하는 대로만 구현하면 답인 구현 문제였다. import sys def gen(n, arr): if sum(arr) == n: print(f"{n} =", " + ".join(map(str, arr))) else: print(f"{n} is NOT perfect.") while 1: factors = [] N = int(sys.stdin.readline()) if N == -1: break for i in range(1, (N // 2) + 1): if not N % i: factors.append(i) gen(N, factors) 며칠동안 쉬운 문제만 풀면서 포스팅 했는데 다음주부터는 다시 그래프 문제를 풀어야겠다. 사실 백준 14502 연구소 문제에서 막혀서 구글링했는데, 보니까 백트래킹이라는 기법..
단순히 구현만 하면 되는 쉬운 문제였다. import sys score = { "A+" : 4.5, "A0" : 4.0, "B+" : 3.5, "B0" : 3.0, "C+" : 2.5, "C0" : 2.0, "D+" : 1.5, "D0" : 1.0, "F" : 0.0 } res = [] total_point = 0 for _ in range(20): subject, point, grade = sys.stdin.readline().split() point = float(point) if grade != 'P': res.append(point * score[grade]) total_point += point print(sum(res)/total_point) 오늘은 쉬어가는 차원에서 가벼운 문제만 풀었다.
재귀를 이용하여 풀 수 있는 쉬운 문제이다. 예전에 재귀함수쪽을 학습할 때 비슷한 문제를 푼 적이 있어서 쉽게 풀었다. import sys s = sys.stdin.readline().strip() l = len(s) - 1 def palindrome(front:int, rear:int, s:str) -> bool: if front >= rear: return 1 if s[front] == s[rear]: ans = palindrome(front + 1, rear - 1, s) return ans else: return 0 print(palindrome(0, l, s)) 자꾸 틀렸다고 나와서 코드를 이리저리 바꿔가면서 했는데도 안됬다. 한 네 번째 시도를 하고 다시 코드를 보니 sys.stdin.read..
자주 등장했던 문제유형이다. 리스트 슬라이싱 후에 해당되는 부분만 매번 원본에서 바꿔주면 된다. import sys N, M = map(int, sys.stdin.readline().split()) basket = [0] + [i for i in range(1, N + 1)] for _ in range(M): i, j, k = map(int, sys.stdin.readline().split()) mid_to_rear = basket[k:j + 1] front_to_mid = basket[i:k] basket[i:j + 1] = mid_to_rear + front_to_mid print(*basket[1:]) 간단했던 구현문제