반응형

It 200

[백준/Python] 토마토

https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net from collections import deque m, n = map(int, input().split()) # 가로, 세로 graph = [list(map(int, input().split())) for _ in range(n)] # 토마토 정보 # 동서남북 이동 방향 dx = [0, 0, 1, -1] dy = [1, -1, 0, 0] queue = deque() answer..

Algorithm/백준 2021.11.18

[백준/Python] 단지번호붙이기

https://www.acmicpc.net/problem/2667 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net n = int(input()) # 지도 크기 graph = [list(map(int, input())) for _ in range(n)] # 지도 answer = [] # 단지 내 집의 수 리스트 count = result = 0 # 각 단지내 집의 수, 총 단지 수 dx = [-1, 0, 1, 0] dy = [0, -1, 0, 1] def dfs(x, y): if x = n or y = n: # ..

Algorithm/백준 2021.11.15

[백준/Python] 탑

https://www.acmicpc.net/problem/2493 2493번: 탑 첫째 줄에 탑의 수를 나타내는 정수 N이 주어진다. N은 1 이상 500,000 이하이다. 둘째 줄에는 N개의 탑들의 높이가 직선상에 놓인 순서대로 하나의 빈칸을 사이에 두고 주어진다. 탑들의 높이는 1 www.acmicpc.net [ 실패 코드 ] - 시간 초과 시간 초과의 이유를 살펴보니 index, slicing 을 사용하면 시간 초과가 났다고 한다. 나는 둘 다 사용하지 않았지만 시간초과가 났다. 뒤에서부터 비교 -> 앞에서부터 비교로 바꾸고 코드 구성을 바꿔줬더니 통과하였다. 시간초과...해결하기 너무 어렵다.... n = int(input()) towers = list(map(int, input().split()..

Algorithm/백준 2021.11.13

[백준/Python] 결혼식

https://www.acmicpc.net/problem/5567 5567번: 결혼식 예제 1의 경우 2와 3은 상근이의 친구이다. 또, 3과 4는 친구이기 때문에, 4는 상근이의 친구의 친구이다. 5와 6은 친구도 아니고, 친구의 친구도 아니다. 따라서 2, 3, 4 3명의 친구를 결혼식에 초대 www.acmicpc.net n = int(input()) m = int(input()) graph = [[] for _ in range(n+1)] visited = [0] * (n+1) # 방문 확인 및 관계 구분 리스트 # 친구 관계 입력받기 for _ in range(m): a, b = map(int, input().split()) graph[a].append(b) graph[b].append(a) # B..

Algorithm/백준 2021.11.12

[백준/Python] 1로 만들기

https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net n = int(input()) dp = [0] * (n+1) for i in range(2, n+1): dp[i] = dp[i-1] + 1 # 2와 3으로 나누어 떨어지지 않는 경우 무조건 1을 빼줘야 하므로 횟수를 추가한다 if i % 2 == 0: # 2로 나누어 떨어지는 경우 dp[i] = min(dp[i], dp[i//2] + 1) if i % 3 == 0: # 3으로 나누어 떨어지는 경우 dp[i] = min(dp[i], dp[i//3] + 1) print(dp[n]) 이 문제는 그렇게 어렵지 않은 d..

Algorithm/백준 2021.11.10

[백준/Python] 포도주 시식

https://www.acmicpc.net/problem/2156 2156번: 포도주 시식 효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을 하려고 하는데, 여기에는 다음과 같은 두 가지 규 www.acmicpc.net n = int(input()) wine = [0] + [int(input()) for _ in range(n)] dp = [0] * (n+1) if n == 1: print(wine[1]) else: dp[1] = wine[1] dp[2] = wine[1] + wine[2] # 최대로 마실 수 있는 포도주의 양 구하기 for i in range(3, n+1): dp[i] = max(dp[i-1], ..

Algorithm/백준 2021.11.07

[백준/Python] 회전하는 큐

https://www.acmicpc.net/problem/1021 1021번: 회전하는 큐 첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 N보다 작거나 같은 자연수이다. 둘째 줄에는 지민이가 뽑아내려고 하는 수의 위치가 www.acmicpc.net from collections import deque n, m = map(int, input().split()) value = list(map(int, input().split())) deque = deque([i+1 for i in range(n)]) count = 0 # 2, 3번 연산의 최소 횟수 for v in value: if v == deque[0]: # 찾는 수와 첫번째 값이 같다..

Algorithm/백준 2021.11.03

[백준/Python] 시리얼 번호

https://www.acmicpc.net/problem/1431 1431번: 시리얼 번호 첫째 줄에 기타의 개수 N이 주어진다. N은 50보다 작거나 같다. 둘째 줄부터 N개의 줄에 시리얼 번호가 하나씩 주어진다. 시리얼 번호의 길이는 최대 50이고, 알파벳 대문자 또는 숫자로만 이루어 www.acmicpc.net n = int(input()) serial = [input() for _ in range(n)] # 숫자 합 구하는 메서드 def s_num(x): result = [int(n) for n in x if n.isdigit()] return sum(result) serial.sort(key=lambda x : (len(x), s_num(x), x)) # 길이 -> 숫자 합 -> 사전 순으로 정..

Algorithm/백준 2021.10.31

[SpringBoot] 10주차 스터디(AOP, 트랜잭션)

1. AOP (Aspect Oriented Programming) - AOP는 Aspect Oriented Programming의 약자로 관점 지향 프로그래밍이라고 불린다. 관점 지향은 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화하겠다는 것이다. 따라서 AOP를 통해 부가 기능을 모듈화할 수 있다. AOP를 사용하면 핵심 기능과 분리하여 부가 기능 중심으로 설계, 구현이 가능해진다. - 스프링에서 부가기능은 "어드바이스", 부가기능을 적용할 위치를 "포인트컷" 이라고 한다. 다음은 AOP를 통해 부가기능을 모듈화한 코드이다. 여기서 부가 기능은 사용자의 API 수행 시간을 측정하는 것이다. 부가 기능은 excute 메서드에 구현되어있다. @Arou..

Back-end/Spring 2021.10.23

[백준/Python] 절대값 힙

https://www.acmicpc.net/problem/11286 11286번: 절댓값 힙 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net import heapq, sys n = int(sys.stdin.readline()) heap = [] for _ in range(n): x = int(sys.stdin.readline()) if x == 0: # 절대값이 가장 작은 값 출력 if len(heap) == 0: print(0) else: print(heapq.heappop(heap)[1]) else: # 힙에 ..

Algorithm/백준 2021.10.23
반응형