목록Algorithm (90)
꿈꾸는 개발자의 devLog
[문제 설명] https://www.acmicpc.net/problem/20300 20300번: 서강근육맨 PT 첫째 날에 $1$과 $4$를 선택하고, 둘째 날에 $2$와 $3$을 선택하고, 마지막 날에 $5$를 선택하면 $M$은 $5$가 되며, 이때가 $M$이 최소일 때이다. www.acmicpc.net PT를 한 번 받을 때 운동 기구를 최대 두 개까지만 선택 가능 향빈이는 N.개의 운동 기구를 한 번씩 사용해 보고 싶음 PT를 받을 때마다 이전에 사용하지 않았던 운동 기구를 선택하기로 함 PT를 받을 때 운동 기구를 되도록이 면 두 개를 사용하기로 함 총 10개의 운동 기구가 있다면, PT를 5번 받으면 모든 기구 다 사용 가능 근데, 근손실도 고려해야함. PT를 한 번 받을 때의 근손실 정도가 M..
[문제 설명] https://www.acmicpc.net/problem/16918 16918번: 봄버맨 첫째 줄에 R, C, N (1 ≤ R, C, N ≤ 200)이 주어진다. 둘째 줄부터 R개의 줄에 격자판의 초기 상태가 주어진다. 빈 칸은 '.'로, 폭탄은 'O'로 주어진다. www.acmicpc.net 봄버맨은 크기가 RxC인 직사각형에서 살고 있음, 각 칸은 비어있거나 폭탄이 들어 있음 폭탄이 있는 칸은 3초가 지난 후에 폭발하고, 인접한 네 칸도 (상,하,좌,우)도함께 폭발함 봄버맨은 다음과 같이 행동함 1. 가장 처음에 봄버맨은 일부 칸에 폭탄을 설치, 모든 폭탄이 설치된 시간은 같음 2. 다음 1초 동안 봄버맨은 아무것도 하지 않음 3. 다음 1초 동안 폭탄이 설치 되어 있지 안은 모든 칸에..
[문제 설명] https://www.acmicpc.net/problem/1189 1189번: 컴백홈 첫 줄에 정수 R(1 ≤ R ≤ 5), C(1 ≤ C ≤ 5), K(1 ≤ K ≤ R×C)가 공백으로 구분되어 주어진다. 두 번째부터 R+1번째 줄까지는 R×C 맵의 정보를 나타내는 '.'과 'T'로 구성된 길이가 C인 문자열이 주어진다 www.acmicpc.net 한수는 캠프를 마치고 집에 돌아가야 함 한수는 현재 왼쪽 아래점에 있고 집은 오른쪽 위에 있음 한수는 집에 돌아가는 방법이 다양하고, 한번 지나친 곳을 다시 방문하지 않음 T로 표시된 부분은 가지 못하는 부분임 RxC 맵에 못가는 부분이 주어지고 거리 K가 주어지면 한수가 집까지 도착하는 경우 중 거리가 K인 가짓수를 구함 [해결 로직] - D..
[문제 설명] https://www.acmicpc.net/problem/1969 1969번: DNA DNA란 어떤 유전물질을 구성하는 분자이다. 이 DNA는 서로 다른 4가지의 뉴클레오티드로 이루어져 있다(Adenine, Thymine, Guanine, Cytosine). 우리는 어떤 DNA의 물질을 표현할 때, 이 DNA를 이루는 뉴클레오 www.acmicpc.net DNA는 서로 다른 4가지의 뉴클레오티드로 이루어져 있음 (A, T, G, c) Hamming distance란 길이가 같은 두 DNA가 있을 때, 각 위치의 뉴클레오티드 문자가 다른 것의 개수 만약에 AGCAT, GGAAT는 첫번재, 세번째 글자가 다르므로 Hamming Distance = 2 N개의 길이 M인 DNA가 주어져 있을 때 ..
https://www.acmicpc.net/problem/6603 6603번: 로또 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있다. 첫 번째 수는 k (6 < k < 13)이고, 다음 k개 수는 집합 S에 포함되는 수이다. S의 원소는 오름차순으로 www.acmicpc.net - 독일 로또는 1~49에서 수 6개를 고름 입력으로 주어지는 숫자 그룹 중에서 6개를 선택하는 모든 경우의 수 출력 [해결 로직] - 이것도, DFS 즉 재귀를 사용하면 됨 - 근데 다른게 뭐냐면, 여기는 중복이 허용이 안되기 때문에 dfs 함수 내에 인덱스를 계속 +1해줘서 다음꺼를 탐색하게 해줘야 함 - 그렇지 않으면, 처음부터 재 탐색이라 똑같은 수를 중복으로 뽑게 됨 - 선택한..
[문제 설명] https://www.acmicpc.net/problem/20291 20291번: 파일 정리 친구로부터 노트북을 중고로 산 스브러스는 노트북을 켜자마자 경악할 수밖에 없었다. 바탕화면에 온갖 파일들이 정리도 안 된 채 가득했기 때문이다. 그리고 화면의 구석에서 친구의 메시지를 www.acmicpc.net - 파일을 확장자 별로 정리해서 몇 개씩 있는지 알려주기 - 보기 편하게 확장자들을 사전 순으로 정렬 [해결 로직] - 매우 간단함 - 파일들을 '.'을 기준으로 분리해서 확장자가 딕셔너리에 있다면 딕셔너리 값 추가, 없다면 키 추가 - 마지막에 출력하기 전에 키를 기준으로 사전 순 정렬 [Solution 코드] n = int(input()) ary = [] dict = {} for i i..
[문제 설명] https://www.acmicpc.net/problem/11123 11123번: 양 한마리... 양 두마리... 얼마전에 나는 불면증에 시달렸지... 천장이 뚫어져라 뜬 눈으로 밤을 지새우곤 했었지. 그러던 어느 날 내 친구 광민이에게 나의 불면증에 대해 말했더니 이렇게 말하더군. "양이라도 세봐!" www.acmicpc.net 양을 #으로 나타내고 .으로 풀을 표현 서로 다른 # 두 개 이상이 붙어있다면 한 무리의 양들이 있는 것 몇 개의 양 무리가 있었는지 출력 [해결 로직] - 단지 번호 붙이기 문제와 매우 유사 - 이런 상하좌우 탐색은 거의 .BFS로 푼다! 뭔가 그게 직관적이랄까..큐가 좋아서 그런걸까.. - 일단, 전체를 하나하나 돌면서, '#'을 발견하는 경우에 BFS함수 실..
[문제 설명] https://www.acmicpc.net/problem/10815 10815번: 숫자 카드 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 상근이는 숫자 카드 N개를 가지고 있음 정수 M개가 주어졌을 때, 이 수가 적혀있는 숫자 카드를 상근이가 가지고 있는지 아닌지 구하는 프로그램 작성 상근이가 가지고 있으면 1, 아니면 0 출력 [해결 로직] - 일단 상근이가 갖고 있는 카드 하나하나 돌면서 주어지는 정수 카드들을 이분탐색함 - 아 여기서 중요한게 정수 카드들은 먼저, 정렬을 해야 이분 ..