일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 웹어플리케이션 서버
- JVM
- MSA
- Spring Boot
- 백준
- Spring
- 백준 15685
- JPA
- 파이썬
- with recursive
- spring cloud
- 백준 16236
- MySQL
- spring oauth
- 백준 17779
- sql 기술면접
- 백준 16719
- java 기술면접
- re.split
- 프로래머스
- springboot
- 백준 19238
- spring security
- 백준 16235
- java
- Kotlin
- Coroutine
- 프로그래머스
- 백준 17626
- 백준 파이썬
- Today
- Total
목록백준 (93)
시작이 반

구현문제이다. 열린 칸 주변에 지뢰가 몇개 있는지 확인(해당 위치에서 8방향) 하여 숫자를 출력한다. 만약 연린 칸에 지뢰가 있다면 모든 지뢰 또한 출력한다. 이중 반복문을 이용하여 구현하였다. dx, dy를 사용하여 좌표를 구하였음 n = int(input()) graph1 = list(input() for _ in range(n)) graph2 = list(input() for _ in range(n)) answer = [['.'] * n for _ in range(n)] dx = [-1, -1, -1, 0, 1, 1, 1, 0] dy = [-1, 0, 1, 1, 1, 0, -1, -1] def findBoom(): for i in range(n): for j in range(n): if graph1..

구현 문제이다. 울음소리를 보고 최소한의 오리가 몇마리인지 찾는다. 오리의 울음소리는 quack이다. q -> u -> a -> c -> k 를 순서대로 찾는다. ex) 울음소리가 quqacukqauackck 라면 quack를 순서대로 찾는다. quqacukqauackck 여기서 k 다음에 또 quack가 있다면 한마리의 오리가 연속으로 2번 소리를 낼 수 있다. (최소한의 오리 수를 찾아야 하기떄문에 중복가능) quqacukqauackck 즉 한 오리가 이렇게 소리를 낸다. 방문한 문자는 visited 리스트를 만들어 방문처리를 한다. 다음 오리는(파란색) quqacukqauackck 방문하지 않은 문자를 보고 quack를 찾는다. 녹음한 소리가 올바르지 않은 경우 - 문자열을 모두 방문을 하지 않았을..

소 리스트를 만들어 처음 관찰된 소들은 해당 위치를 저장한다. 처음 관찰된 소가 아니면 저장된 위치와 해당 위치를 비교하여 다르면 count를 증가시킨다. n = int(input()) cow = [-1] * 11 cnt = 0 for _ in range(n): target_cow, position = map(int, input().split(' ')) if cow[target_cow] == -1: cow[target_cow] = position else: if cow[target_cow] != position: cnt += 1 cow[target_cow] = position print(cnt)

구현 문제이다. 시작 좌표를 구한다. x = n / 2 y = n / 2 시작좌표에서 시작하여 상, 우, 하, 좌를 돌면서 1씩 더해간다. 이동 횟수는 정수(제곱근수) 만큼 이동한다. ex) 상 2 2의 제곱근 1.xxxx 위로 한칸까지 이동할 수 있다. 1칸 이동했으므로 오른쪽 확인 우 3 3의 제곱근 1.xxxx 오른쪽으로 한칸까지 이동할 수 있다. 1칸 이동했으므로 아래 확인 하 4 4의 제곱근 2 아래로 두칸까지 이동할 수 있다. 하 5 5의 제곱근 2 2칸 이동했으므로 왼쪽확인 ....... n = int(input()) target = int(input()) graph = list([0] * n for _ in range(n)) s_x, s_y = n // 2, n // 2 graph[s_x]..

구현 문제이다. 준현이는 현재 가진돈에서 주식을 살 수 있으면 살 수 있는 개수만큼 전량 매수하고 팔지 않는다. 성준이는 가격이 연속으로 3일 하락하면 해당 날에 주식을 전량 매수한다. 또한 가격이 연속으로 3일 상승하면 해당 날에 주식을 전량 매도한다. 마지막 날에 남은 돈과 주식을 갖고 있는 개수를 구하여 서로 비교한다. money = int(input()) stocks = list(map(int,input().split())) def jun(): left_money = money stock_n = 0 for stock in stocks: stock_n += left_money // stock left_money = left_money % stock if left_money == 0: break re..

다익스트라 알고리즘이다. 다익스트라 알고리즘은 edge의 가중치가 양수만 있을때 사용할 수 있다. 2가지 방법으로 풀 수 있다. 1. 해당 노드에서 이어진 노드들중 가중치가 가장 작은 경로를 선택한다. 2. 우선순위 큐를 사용하여 해결할 수 있다. 우선순위 큐를 이용하여 풀었다. (가장 작은 가중치를 선택해야함) 파이썬에서는 우선순위 큐를 사용하기위해 heapq를 사용할 수 있다. (동작은 min heap인듯 하다) 다익스트라를 풀기위해 필요한 것들 1. 우선순위 큐에 사용될 list ( queue = list() ) 2. 가중치를 저장할 list ( distance = list() ) 세팅 distance[시작점] = 0 우선순위 큐에 (해당 점의 가중치, 해당점) 을 넣는다. queue가 빌때까지 반..

문제를 이해를 못했다.. 출력에 첫째 줄에 가장 인접한 두 공유기 사이의 최대 거리를 출력한다. 라고 써있는데 인접한 두 공유기 사이 최대 거리가 뭔소린지 몰라서 문제부터 이해했다... 이해한 내용) 공유기 개수 3 좌표 : 1 2 4 8 9 만약 거리 = 2 라면 1에 설치하면 1+2 = 3 -> 다음 설치할 공유기 위치는 3이상인 좌표이다. 2에는 설치 못한다. 4에 설치 4+2 = 6 -> 다음 설치할 공유기 위치는 6이상인 좌표이다. 8에 설치 8+2 = 10 -> 다음에 설치할 공유기 위치는 10이상인 좌표이다. 9에는 설치 못한다. 끝----- 설치한 공유기 개수 3개 거리가 2일때 만족 만약 거리 = 3 라면 1에 설치하면 1+3 = 4 -> 다음 설치할 공유기 위치는 4이상인 좌표이다. 2..

나무를 0미터를 가져갈 수 도있고 최대 높이를 가져갈 수도있다. 즉 절단기의 길이는 최대 높이를 자르려면 맨 밑동을 잘라야한다 -> 0 0미터를 가져간다면 가장큰 높이의 나무만큼 절단기 높이를 설정한다 -> max(trees) n, m = map(int, input().split(' ')) trees = list(map(int, input().split(' '))) def binary(): left = 0 right = max(trees) while left 0: height += tree - mid if height >= m: # 잘린 길이가 구하려는 것보다 크면 더 큰높이로 자르기 left = mid + 1 elif height < m: # 잘린 길이가 구하려는 것보다 작으면 더 작은 높이로 자르기 ..