분류 전체보기
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..
패캠 CS 강의 - 네트워크 - Part 1. 컴퓨터 네트워크 소개
1. 컴퓨터 네트워크와 인터넷 1.1. 네트워크와 인터넷 1.1.1. 네트워크 1.1.2. 인터넷 1.1.3. OSI 7계층 (Layer) 1.1.4. TCP/IP (Transmission Control Protocol/Internet Protocol) 1.2. 그 밖에 자주 사용되는 용어들 1.2.1. IP 주소 (Address) 1.2.2. 패킷 교환 (Packet Switching) 1.3. 통신을 위한 기본 동작 1.3.1. 요청(Request) 1.3.2. 인지(Indicate) 1.3.3. 응답(Response) 1.4. 확인(Confirm) 2. 네트워크의 유형 2.1. LAN (Local Area Network) 2.2. WAN (Wide Area Network) 2.3. 크기 유형 3. ..
17069. 파이프 옮기기 2
17069번: 파이프 옮기기 2 (acmicpc.net) 17069번: 파이프 옮기기 2 유현이가 새 집으로 이사했다. 새 집의 크기는 N×N의 격자판으로 나타낼 수 있고, 1×1크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 (r, c)로 나타낼 수 있다. 여기서 r은 행의 번호, c는 열의 www.acmicpc.net 문제 유형 : 브루트 포스, DP # 가능한 방법의 수가 제한이 없다. # 따라서, 32x32 모양의 격자이므로 칸의 최대 개수는 1024에, # (0,0),(0,1)칸을 제외하고 각 칸에 (x,y)가 오는 경우/아닌 경우 2가지를 곱하여 구해지는 # 모든 경우의 수는 대략 2^1022 일 것 같다. # 따라서, 브루트 포스가 아닌 dp를 사용한 백트랙킹을 적용하여 탐색 경우의 수 ..
브루트포스) 17070.파이프 옮기기 1
17070번: 파이프 옮기기 1 (acmicpc.net) 17070번: 파이프 옮기기 1 유현이가 새 집으로 이사했다. 새 집의 크기는 N×N의 격자판으로 나타낼 수 있고, 1×1크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 (r, c)로 나타낼 수 있다. 여기서 r은 행의 번호, c는 열의 www.acmicpc.net n=int(input()) a=[list(map(int,input().split())) for _ in range(n)] x,y=0,1 ans=0 def dfs(x,y,direction): global a,n,ans if (x,y)==(n-1,n-1): ans+=1 return # 가 if direction==0: # 가로 if 0