목록백준 (176)
홍우진의 개발 일기장
문제 링크 https://www.acmicpc.net/problem/1543 1543번: 문서 검색 세준이는 영어로만 이루어진 어떤 문서를 검색하는 함수를 만들려고 한다. 이 함수는 어떤 단어가 총 몇 번 등장하는지 세려고 한다. 그러나, 세준이의 함수는 중복되어 세는 것은 빼고 세야 한 www.acmicpc.net 풀이 코드 a = input() b = input() cnt = 0 n = 0 while n
문제 링크 https://www.acmicpc.net/problem/11726 11726번: 2×n 타일링 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다. www.acmicpc.net 풀이 코드 n = int(input()) dp = [0 for _ in range(n+1)] if n
문제 링크 https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net 풀이 코드 n = int(input()) m = int(input()) graph = [[]*n for _ in range(n+1)] for _ in range(m): a,b = map(int,input().split()) graph[a].append(b) graph[b].append(a) cnt = 0 visited = [0]*(n+1) def dfs(start): global cnt vi..
문제 링크 https://www.acmicpc.net/problem/17219 17219번: 비밀번호 찾기 첫째 줄에 저장된 사이트 주소의 수 N(1 ≤ N ≤ 100,000)과 비밀번호를 찾으려는 사이트 주소의 수 M(1 ≤ M ≤ 100,000)이 주어진다. 두번째 줄부터 N개의 줄에 걸쳐 각 줄에 사이트 주소와 비밀번 www.acmicpc.net 풀이 코드 import sys n, m = map(int, sys.stdin.readline().split()) site = {} for _ in range(n): id, pw = map(str, sys.stdin.readline().split()) site[id] = pw for _ in range(m): address = str(sys.stdin.rea..
문제 링크 https://www.acmicpc.net/problem/1302 1302번: 베스트셀러 첫째 줄에 오늘 하루 동안 팔린 책의 개수 N이 주어진다. 이 값은 1,000보다 작거나 같은 자연수이다. 둘째부터 N개의 줄에 책의 제목이 입력으로 들어온다. 책의 제목의 길이는 50보다 작거나 같고 www.acmicpc.net 풀이 코드 n = int(input()) dic = {} for i in range(n): a = input() if a not in dic: dic[a] = 1 else: dic[a] += 1 list = [] num = max(dic.values()) for i in dic: if num == dic[i]: list.append(i) list.sort() print(list[..
우연히 옛날에 내가 풀었던 문제를 다시 보게 되었는데 풀이 방법이 기억이 하나도 나지 않았다. 애초에 이 문제를 풀었었던 기억조차 나지 않았다. 심지어 내가 블로그 포스팅한 기록을 봐도 기억이 나지 않았다. 그래서 나는 포스팅 방식을 공부에 도움이 더 되는 방향으로 바꾸기로 하였다. 문제 설명과 답만 포스팅하는 방식에서 간단한 문제 링크와 풀이 코드, 코드 해석을 포스팅하는 방식으로 바꾸기로 하였다. 복습하는데도 훨씬 도움이 되고 답만 적어놓는 방식보다 남에게 설명하듯이 기재하며 내 생각을 다시 정리할 수 있을 것 같다. 사실 다른 블로거들은 대부분 이 방식을 사용하고 있었지만 나만 몰랐던 것 같다 😑 문제 링크 https://www.acmicpc.net/problem/1049 1049번: 기타줄 첫째 ..
문제 설명 비어있는 공집합 S가 주어졌을 때, 아래 연산을 수행하는 프로그램을 작성하시오. add x: S에 x를 추가한다. (1 ≤ x ≤ 20) S에 x가 이미 있는 경우에는 연산을 무시한다. remove x: S에서 x를 제거한다. (1 ≤ x ≤ 20) S에 x가 없는 경우에는 연산을 무시한다. check x: S에 x가 있으면 1을, 없으면 0을 출력한다. (1 ≤ x ≤ 20) toggle x: S에 x가 있으면 x를 제거하고, 없으면 x를 추가한다. (1 ≤ x ≤ 20) all: S를 {1, 2, ..., 20} 으로 바꾼다. empty: S를 공집합으로 바꾼다. 입력값 첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다. 둘째 줄부터 M개의 줄에 수행해야..
문제 설명 지민이는 길이가 64cm인 막대를 가지고 있다. 어느 날, 그는 길이가 Xcm인 막대가 가지고 싶어졌다. 지민이는 원래 가지고 있던 막대를 더 작은 막대로 자른다음에, 풀로 붙여서 길이가 Xcm인 막대를 만들려고 한다. 막대를 자르는 가장 쉬운 방법은 절반으로 자르는 것이다. 지민이는 아래와 같은 과정을 거쳐서 막대를 자르려고 한다. 지민이가 가지고 있는 막대의 길이를 모두 더한다. 처음에는 64cm 막대 하나만 가지고 있다. 이때, 합이 X보다 크다면, 아래와 같은 과정을 반복한다. 가지고 있는 막대 중 길이가 가장 짧은 것을 절반으로 자른다. 만약, 위에서 자른 막대의 절반 중 하나를 버리고 남아있는 막대의 길이의 합이 X보다 크거나 같다면, 위에서 자른 막대의 절반 중 하나를 버린다. 이..