분류 전체보기 390

[파이썬] [DP] 백준 1446 지름길

문제 https://www.acmicpc.net/problem/1446 1446번: 지름길 첫째 줄에 지름길의 개수 N과 고속도로의 길이 D가 주어진다. N은 12 이하인 양의 정수이고, D는 10,000보다 작거나 같은 자연수이다. 다음 N개의 줄에 지름길의 시작 위치, 도착 위치, 지름길의 길이 www.acmicpc.net 코드 import sys input=sys.stdin.readline n,d=map(int, input().split()) graph=[[] for _ in range(d+1)] for _ in range(n): a,b,c=map(int, input().split()) if b

문제풀이/DP 2023.02.28

[파이썬] [DP] 백준 15989 1, 2, 3 더하기 4

문제 https://www.acmicpc.net/problem/15989 15989번: 1, 2, 3 더하기 4 정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 4가지가 있다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다. 합을 이루고 있는 수의 순서만 다른 것은 같은 것으로 친다. 1+1+1+1 2+1+1 (1+1+2, 1+2+1) 2+2 www.acmicpc.net 코드 import sys input = sys.stdin.readline #1만 사용하여 나타내는 경우는 한가지 이므로 1로 초기화 dp=[1]*10001 #2가 추가되는 경우 for i in range(2,10001): dp[i]+=dp[i-2] #3이 추가되는 경우 for i in range(3,10001): dp[i]+=dp..

문제풀이/DP 2023.02.27

[파이썬] [투포인터] 백준 20922 겹치는 건 싫어

문제 https://www.acmicpc.net/problem/20922 20922번: 겹치는 건 싫어 홍대병에 걸린 도현이는 겹치는 것을 매우 싫어한다. 특히 수열에서 같은 원소가 여러 개 들어 있는 수열을 싫어한다. 도현이를 위해 같은 원소가 $K$개 이하로 들어 있는 최장 연속 부분 수열 www.acmicpc.net 코드 import sys input=sys.stdin.readline n,k=map(int, input().split()) array=list(map(int, input().split())) left,right=0,0 count=[0]*(max(array)+1) result=0 while right

문제풀이/기타 2023.02.24

[파이썬] [BFS] 백준 4179 불!

문제 https://www.acmicpc.net/problem/4179 4179번: 불! 입력의 첫째 줄에는 공백으로 구분된 두 정수 R과 C가 주어진다. 단, 1 ≤ R, C ≤ 1000 이다. R은 미로 행의 개수, C는 열의 개수이다. 다음 입력으로 R줄동안 각각의 미로 행이 주어진다. 각각의 문자 www.acmicpc.net 코드 import sys from collections import deque input=sys.stdin.readline queue=deque() dx=[-1,1,0,0] dy=[0,0,-1,1] r,c=map(int, input().split()) graph=[list(input().rstrip()) for _ in range(r)] visited=[[0]*c for _ ..

[파이썬] [이진탐색] 백준 1253 좋다

문제 https://www.acmicpc.net/problem/1253 1253번: 좋다 첫째 줄에는 수의 개수 N(1 ≤ N ≤ 2,000), 두 번째 줄에는 i번째 수를 나타내는 Ai가 N개 주어진다. (|Ai| ≤ 1,000,000,000, Ai는 정수) www.acmicpc.net 코드 n=int(input()) array=list(map(int, input().split())) array.sort() #결과값 저장 용도 count=0 for i in range(len(array)): #index i번째 제거하고 temp=array[:i]+array[i+1:] left, right=0, len(temp)-1 while left

[파이썬] [백트래킹] 백준 7490 0 만들기

문제 https://www.acmicpc.net/problem/7490 7490번: 0 만들기 각 테스트 케이스에 대해 ASCII 순서에 따라 결과가 0이 되는 모든 수식을 출력한다. 각 테스트 케이스의 결과는 한 줄을 띄워 구분한다. www.acmicpc.net 코드 t=int(input()) def cal(temp): #배열 맨뒤에 붙은 "+", "-". " "제거 temp = temp[:-1] #정답을 위해 원본 저장 ori=temp temp=temp.replace(" ","") #eval함수를 통해 string 수식 계산 if eval(temp)==0: s.add(ori) def dfs(index, temp): if index==len(array): cal(temp) return dfs(index..

문제풀이/기타 2023.02.19

[Spring] 토큰 만료 예외처리

문제 상황 access token이 만료될 경우, 토큰을 재발급하기 위해 토큰 만료에 대한 예외처리가 필요했다 처음에는 아무생각 없이 JwtTokenFilter에서 예외를 던지면 Exception Handler에서 처리하지 않을까 했다 그러나 당연히 처리하지 못했고 filter는 dispatcher servlet 보다 앞단에 존재하기 때문에 Exception Handler로는 처리하지 못한다는 것을 알았다. 문제 해결 filter exception handler를 검색하던 중 현재 필터보다 앞단에 예외 처리를 위한 필터를 하나 더 두는 방법을 찾았다 즉, 원래는 요청 -> JwtTokenFilter 의 형태였다면, 요청 -> JwtExceptionFilter -> JwtTokenFilter로 필터를 구성..

TIL 2023.02.17

[파이썬] [백트래킹] 백준 22251 빌런 호석

문제 https://www.acmicpc.net/problem/22251 22251번: 빌런 호석 LED를 2개까지 바꿀 수 있을 때, 5층에서 3층, 6층, 8층, 그리고 9층으로 바꿔버릴 수 있다. www.acmicpc.net 코드 # 0~9까지의 수를 배열로 표시 array=[[] for _ in range(10)] array[0]=[1,1,1,0,1,1,1] array[1]=[0,0,1,0,0,1,0] array[2]=[1,0,1,1,1,0,1] array[3]=[1,0,1,1,0,1,1] array[4]=[0,1,1,1,0,1,0] array[5]=[1,1,0,1,0,1,1] array[6]=[1,1,0,1,1,1,1] array[7]=[1,0,1,0,0,1,0] array[8]=[1,1,1,1..

문제풀이/기타 2023.02.17

[Java] stream

filter 스트림내 요소에 대해서 필터링하는 작업 public class Human { private Long idx; private String name; private Integer money; private LocalDate birth; } @DisplayName("돈이 2000원 이상인 사람 전부") void filterTest3() { List tmpHumans = humans.stream() .filter(h -> h.getMoney() > 2000) .collect(Collectors.toList()); } map 스트림내 요소들에 대해 함수가 적용된 결과의 새로운 요소로 매핑 public class Human implements Comparable { private Long idx; pr..

TIL 2023.02.15

[파이썬] [스택] 백준 1863 스카이라인

문제 https://www.acmicpc.net/problem/1863 1863번: 스카이라인 쉬운거 첫째 줄에 n이 주어진다. (1 ≤ n ≤ 50,000) 다음 n개의 줄에는 왼쪽부터 스카이라인을 보아 갈 때 스카이라인의 고도가 바뀌는 지점의 좌표 x와 y가 주어진다. (1 ≤ x ≤ 1,000,000. 0 ≤ y ≤ 500,000) 첫 www.acmicpc.net 코드 import sys input=sys.stdin.readline n = int(input()) answer = 0 skylines = [] for i in range(n): skylines.append(int(input().split()[1])) skylines.append(0) stk = [0] for p in skylines: #..

문제풀이/기타 2023.02.15