코딩 테스트/백준 - 일반
2531. 회전 초밥, 15961. 회전 초밥
https://www.acmicpc.net/problem/2531 2531번: 회전 초밥 첫 번째 줄에는 회전 초밥 벨트에 놓인 접시의 수 N, 초밥의 가짓수 d, 연속해서 먹는 접시의 수 k, 쿠폰 번호 c가 각각 하나의 빈 칸을 사이에 두고 주어진다. 단, 2 ≤ N ≤ 30,000, 2 ≤ d ≤ 3,000, 2 ≤ www.acmicpc.net https://www.acmicpc.net/problem/15961 15961번: 회전 초밥 첫 번째 줄에는 회전 초밥 벨트에 놓인 접시의 수 N, 초밥의 가짓수 d, 연속해서 먹는 접시의 수 k, 쿠폰 번호 c가 각각 하나의 빈 칸을 사이에 두고 주어진다. 단, 2 ≤ N ≤ 3,000,000, 2 ≤ d ≤ 3,000, 2 www.acmicpc.net i..
3078. 좋은 친구
https://www.acmicpc.net/problem/3078 3078번: 좋은 친구 첫째 줄에 N과 K가 주어진다. (3 ≤ N ≤ 300,000, 1 ≤ K ≤ N) 다음 N개 줄에는 상근이네 반 학생의 이름이 성적순으로 주어진다. 이름은 알파벳 대문자로 이루어져 있고, 2글자 ~ 20글자이다. www.acmicpc.net import sys input=sys.stdin.readline n,k=map(int,input().split()) a=[] for i in range(n): a.append(len(input().strip())) m=k+1 b=[0]*21 ans=0 for i in range(m): ans+=b[a[i]] b[a[i]]+=1 for end in range(m,n): start..
1593. 문자 해독
https://www.acmicpc.net/problem/1593 1593번: 문자 해독 첫째 줄에 고고학자들이 찾고자 하는 단어 W의 길이 g와 발굴된 벽화에서 추출한 문자열 S의 길이 |S|가 빈 칸을 사이에 두고 주어진다. (1≤g≤3000, g≤|S|≤3,000,000) 둘째 줄에 W, 셋째 줄에 S의 실 www.acmicpc.net # 솔루션 # 1. w와 s의 각 알파벳을 총 알파벳 (a-z, A-Z) 52자리 배열에 실제 존재하면 +1, 그 외엔 0 로 담는다. # 2. s를 담을 때, 슬라이딩 윈도우 기법을 적용한다. # 3. 즉, s에 n개씩 담으면서, 담긴 문자열이 w와 같은 지 체크한다. 그리고 슬라이딩 윈도우 왼쪽 것은 빼고, 오른쪽 것은 새로 넣으면서 m까지 탐색한다. import..
11003. 최솟값 찾기
https://www.acmicpc.net/problem/11003 11003번: 최솟값 찾기 N개의 수 A1, A2, ..., AN과 L이 주어진다. Di = Ai-L+1 ~ Ai 중의 최솟값이라고 할 때, D에 저장된 수를 출력하는 프로그램을 작성하시오. 이때, i ≤ 0 인 Ai는 무시하고 D를 구해야 한다. www.acmicpc.net import sys from collections import deque input=sys.stdin.readline n,k=map(int,input().split()) a=list(map(int,input().split())) d=deque() # 덱의 첫 번째 값이 [최솟값 인덱스, 최솟값]이 되도록 유지. for i,num in enumerate(a): whi..