| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 | 31 |
- appendleft
- pypy3
- Java
- JPA
- 인프런
- 완전탐색
- Python
- 우선순위큐
- 그리디 알고리즘
- 백준
- unity
- popleft
- 연관관계
- 소수판별
- 브루투포스
- DP
- deque
- 소수찾기
- 합 구하기
- python3
- 누적합
- BFS
- c#
- 파이썬
- LCM
- spring
- 1일1솔
- 프로그래머스
- mvc
- C#강의
- Today
- Total
목록분류 전체보기 (139)
jae_coding
문제 문제 링크 문제 접근 N(짝수): 동굴의 길이 H: 동굴의 높이 종유석과 석순이 번갈아가면서 등장한다 종유석: 아래에서부터 등장 석순: 위에서부터 등장 짝수번째 인덱스: 종유석, 홀수번째 인덱스: 석순으로 지정후 리트스 추가 코드 import sys N, H = map(int, sys.stdin.readline().split()) up = [0] * (H+1) down = [0] * (H+1) count = [0] * (H+1) for i in range(N): temp = int(sys.stdin.readline()) if i % 2 == 0: down[temp] += 1 else: up[H-temp+1] += 1 for j in range(H-1, 0, -1): down[j] += down[j+..
문제 문제 링크 문제 접근 T: 테스트 케이스의 수 N: 배열의 크기 (1
문제 문제 링크 문제 접근 N: 온도를 측정한 전체 날짜의 수 K: 합을 구하기 위한 연속적인 날짜의 수 구하고자 하는 것: K일 동안의 온도의 합이 가장 큰 프로그램을 계산하는 프로그램 코드 시간초과 코드 import sys N, K = map(int, sys.stdin.readline().split()) lst = list(map(int, sys.stdin.readline().split())) # N-K+1는 K일동안 온도의 합을 구하는 집합의 원소의 개수 result = 0 for i in range(N-K+1): S = sum(lst[i:i+K]) if result < S: result = S print(result) 통과 코드 import sys N, K = map(int, sys.stdin.r..
문제 문제 링크 문제 접근 뿅망치에 맞은 사람의 키: 뽕망치에 맞은 사람의 키 / 2 (키가 1인 경우는 변함이 없다) 뿅망치를 효율적으로 사용하기 위한 전략 1바로 매번 가장 키가 큰 거인 가운데 하나를 때리는 것이다. N: 인구수 H: 센티의 키 T: 뿅망치 횟수 제한 거인의 나라에 모든 거인이 센티보다 키가 작다면 YES, 아니라면 NO 출력 YES: 뿅망치를 최소 사용한 횟수 출력 NO:뿅망치 사용한 이후 가장 큰 거인의 키 출력 우선순위 큐를 사용 코드 import sys import heapq def check(lst): global H temp = int(heapq.heappop(lst) * (-1)) if temp < H: return True heapq.heappush(lst, -temp..
문제 문제 링크 문제 접근 N x N의 바둑판 흰방(1): 통과가 가능하다 검은방(0): 통과가 불가능하다 (1,1)에서 (8,8)을 가기 위해서 검은방을 흰방으로 최소한으로 바꿔서 통과하라 상하좌우에 visited를 이용하여 탐색을 하지 않은 곳은 인접 이전 visited값이나 visited +1값으로 변경 만약 흰방(1)일 경우에는 q.appendleft를 이용하여 우선 탐색(popleft를 사용하기 때문)하고 이전 visited값과 동일하게 해준다. 하지만 검은 방(0)일 경우에는 q.append를 이용하여 후순위로 미룬다. 그리고 visited + 1을 해준다. (찾는 것이 검은방을 흰방으로 변경하는 개수를 최소화한 것을 출력하라고 했기 때문이다) 코드 import sys from collecti..
문제 문제 링크 문제 접근 BFS N x M 크기의 보드와 4개의 버튼으로 이루어진 게임 버튼은 상하좌우 4가지가 있다. 버튼을 누르면 두 동전이 버튼에 쓰여있는 방향으로 동시에 이동한다. 1. 벽이면 동전은 이동하지 않는다 2. 이동하려는 칸에 칸이 없으면 동전은 떨어진다 3. 그 외의 경우에는 원하는 방향으로 이동한다. 두 동전 중 하나만 보드에서 떨어뜨리기 위해 버튼을 최소 몇번 눌러야 할까? o: 동전 .: 빈 칸 #: 벽 동전의 개수는 항상 2개 10번 이상의 버튼클릭을 할 경우 -1출력 코드 import sys from collections import deque def BFS(board, coins_location): d = [(-1, 0), (0, -1), (1, 0), (0, 1)] co..
문제 문제 링크 문제 접근 DFS 백트레킹 itertool 모듈을 사용하지 않는 조합문제 코드 import sys N, M = map(int, sys.stdin.readline().split()) lst = list(i for i in range(1, N+1)) result = list() def DFS(): global result, lst, N, M if len(result) == M: print(*result) return for i in range(0, N): if lst[i] not in result: result.append(lst[i]) DFS() result.pop() DFS() 느낀점 itertool을 사용하면 쉽지만 중복되지 않는 조합을 구하는 코드를 구현해보는 것도 쉽지많은 않다.
문제 문제 링크 문제 접근 DFS 백트레킹 itertool 모듈을 사용하지 않는 오름차순 조합문제 코드 def DFS(idx): global result, lst, N, M if len(result) == M: temp = 0 for i in result: if temp < i: temp = i else: temp = -1 break if temp != -1: print(*result) return for i in range(idx, N): if lst[i] not in result: result.append(lst[i]) DFS(idx + 1) result.pop() DFS(0) 느낀점 itertool을 사용하면 쉽지만 중복되지 않는 조합을 구하는 코드를 구현해보는 것도 쉽지많은 않다.
문제 문제 링크 문제 접근 문자열을 이용 1. 앞에서부터 문자를 지우면서 팰린드롬 확인하기 2. 만약 지운 후의 문자의 길이가 1이면 원래의 문자길이 * 2 -1 3. 아니라면 팰린드롬일 경우의 index 값을 더해준다. 코드 import sys def is_pal(input_string): temp = len(input_string) for i in range(len(input_string)): set_string = input_string[i:] # 앞 문자열 하나씩 제거하면서 확인 if len(set_string) == 1 or set_string == set_string[::-1]: return temp + i S = sys.stdin.readline().strip() print(is_pal(S)..
이번에는 유튜브에 있는 골드메탈님의 예제를 직접 구현해보는 시간을 가졌다. 유니티에 대하여 공부하기 위해서는 어떻게 구현할지에 대한 생각과 기획에 대한 시간을 많이 가져야 하는 것을 알게되었다. 게임 클라이언트에 대하여 공부해보면서 느낀 점은 생각하기로는 간단한 인디게임들을 만들 때에는 수많은 생각과 고려사항이 존재하다는 것에 대하여 알 수 있었다. 수많은 Unity 기능들을 모두 활용은 하지 못하였다. 이 게임의 문제점은 방향키 상하좌우를 이용하고 스페이스바를 이용한다는 점인데 이것을 조이스틱과 점프 버튼을 통하여 더욱 발전시킬 계획이다. 아래의 동영상은 게임 실행화면이다. 다음에는 업그레이드된 문제를 만들어봐야겠다.