https://www.acmicpc.net/problem/17135 17135번: 캐슬 디펜스 첫째 줄에 격자판 행의 수 N, 열의 수 M, 궁수의 공격 거리 제한 D가 주어진다. 둘째 줄부터 N개의 줄에는 격자판의 상태가 주어진다. 0은 빈 칸, 1은 적이 있는 칸이다. www.acmicpc.net 코드 ##17135 캐슬_디펜스 import copy from itertools import combinations as cm n, m, d = map(int, input().split()) enemies = [] for _ in range(n): row = list(map(int, input().split())) enemies.append(row) distance = -1 if d
분류 전체보기
https://www.acmicpc.net/problem/7795 7795번: 먹을 것인가 먹힐 것인가 심해에는 두 종류의 생명체 A와 B가 존재한다. A는 B를 먹는다. A는 자기보다 크기가 작은 먹이만 먹을 수 있다. 예를 들어, A의 크기가 {8, 1, 7, 3, 1}이고, B의 크기가 {3, 6, 1}인 경우에 A가 B를 먹을 www.acmicpc.net 문제 분석 심해에는 두 종류의 생명체 A와 B가 존재한다. A는 B를 먹는다. A는 자기보다 크기가 작은 먹이만 먹을 수 있다. 예를 들어, A의 크기가 {8, 1, 7, 3, 1}이고, B의 크기가 {3, 6, 1}인 경우에 A가 B를 먹을 수 있는 쌍의 개수는 7가지가 있다. 8-3, 8-6, 8-1, 7-3, 7-6, 7-1, 3-1. 두 ..
https://www.acmicpc.net/problem/15686 15686번: 치킨 배달 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸 www.acmicpc.net 문제분석 분류 구현, 브루트포스 알고리즘, 백트래킹 문제설명 크기가 NxN인 도시가 있고, 도시는 1x1 크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타나고, r과 c는 1부터 시작한다. 치킨 거리: 집과 가장 가까운 치킨집 사이의 거리 → (r1, c1)과 (r2, c2) 사이의 거리는 |r1-r..
1874번: 스택 수열 (acmicpc.net) 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net 소스코드 문제풀이 문제를 이해하는 데 많은 시간이 걸렸다. 숫자를 하나씩 입력받으면서 스택에 넣고 미리 오름차순으로 만들어놓은 벡터의 값과 같으면 꺼낸다. 마지막 숫자가 꺼내지면 벡터에 있는 값과 같아야한다. 만약 다르다면 만들 수 없는 수열이다. 개인적으로 이번 주차에서 가장 어려운 문제였다.
https://www.acmicpc.net/problem/1302 1302번: 베스트셀러 첫째 줄에 오늘 하루 동안 팔린 책의 개수 N이 주어진다. 이 값은 1,000보다 작거나 같은 자연수이다. 둘째부터 N개의 줄에 책의 제목이 입력으로 들어온다. 책의 제목의 길이는 50보다 작거나 같고 www.acmicpc.net 소스 코드 문제 풀이 key(책이름),value(빈도수) 딕셔너리를 이용하였다. 우선 책이름을 입력받아 딕셔너리에 없는 값이면 추가, 딕셔너리에 이미 있는 값이면 빈도수 + 1을 해주었다. 그 후 최대값을 가진 책이름만 따로 뽑아 리스트를 만들었고, 그 리스트를 정렬한 후 맨 앞의 값을 출력하였다.
https://www.acmicpc.net/problem/23291 23291번: 어항 정리 마법사 상어는 그동안 배운 마법을 이용해 어항을 정리하려고 한다. 어항은 정육면체 모양이고, 한 변의 길이는 모두 1이다. 상어가 가지고 있는 어항은 N개이고, 가장 처음에 어항은 일렬로 바 www.acmicpc.net 문제 정리 1. 가장 물고기가 작게 들어있는 어항에 물고기 한마리를 넣는다. (최소값이 여러개면 모든 최솟값인 어항에 한마리씩 넣는다) 2. 다음과 같은 순서로 어항을 쌓는다 * 1. 초기: 제일 왼쪽 어항을 그다음 어항위에 올린다. * 2. 이후: 높이가 2이상인 모든 열을 시계방향으로 회전시킨 후 높이가 1인 열 위에 쌓는다 * 3.밑의 그림과 같이 어항이 공중에 뜨기 전까지 반복한다. 3. ..
https://www.acmicpc.net/problem/1806 1806번: 부분합 첫째 줄에 N (10 ≤ N >n>>m; int a[n+1]; for(int i=1; i>a..
https://www.acmicpc.net/problem/1644 1644번: 소수의 연속합 첫째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 4,000,000) www.acmicpc.net 문제 분석 어떤 자연수 N이 주어졌을 때 N을 나타낼 수 있는 소수의 연속합의 개수를 구하는 문제입니다. 에라토스테네스의 체를 이용하여 어떤 자연수 이하의 모든 소수를 구할 수 있고, 소수들이 자연스레 정렬되어 있기 때문에 투 포인터로 쉽게 문제를 해결할 수 있습니다. 코드 #include #include using namespace std; vector p(4000001, true); vector prime; int N, s=0, e=0, sum=0, ans=0; int main() { cin>>N; for(int..
소스코드 T = int(input()) for i in range(T): n, word = input().split() n = int(n) print(word[:n-1], word[n:], sep='') 문제 분석 처음에는 문자열을 리스트화 시킨 후 해당 부분을 제거하고 for과 end=''을 활용해 리스트 요소를 이어서 출력시키려고 했는데 이렇게 하는 것 보다 그냥 해당 부분 제외한 리스트를 이어붙히는 게 더 빠를 거라 생각해서 print(word[:n-1], word[n:], sep='')를 활용해서 출력했습니다.
https://www.acmicpc.net/problem/2908 2908번: 상수 상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두 www.acmicpc.net 문제설명 첫째 줄에 같지 않은 세 자리 수 A,B가 주어지고, 수를 거꾸로 읽은 다음 큰 수를 출력한다. 문제 분석 A와 B를 입력받고 reversed로 수를 거꾸로 돌린다음 돌린 수를 비교하여 출력한다.
7785번: 회사에 있는 사람 (acmicpc.net) 7785번: 회사에 있는 사람 첫째 줄에 로그에 기록된 출입 기록의 수 n이 주어진다. (2 ≤ n ≤ 106) 다음 n개의 줄에는 출입 기록이 순서대로 주어지며, 각 사람의 이름이 주어지고 "enter"나 "leave"가 주어진다. "enter"인 경우는 www.acmicpc.net 소스 코드 n=int(input()) d={} for i in range(n): a,b=input().split() if b=="enter": flag=True if b=="leave": flag=False d[a]=flag c=list(d.keys()) c.sort(reverse=True) for i in range(len(c)): if d[c[i]]==True: p..
문제 아주 멀리 떨어져 있는 작은 나라가 있다. 이 나라에서 가장 공부를 잘하는 학생들은 모두 다른 나라로 유학을 간다. 정부는 최고의 학생들이 자꾸 유학을 가는 이유를 찾으려고 했다. 하지만, 학생들의 이유가 모두 달랐기 때문에 정확한 이유를 찾을 수 없었다. 정부의 고위직은 뛰어난 학생들이 자꾸 유학을 가는 현상을 매우 불쾌해 했다. 가장 많은 학생들이 유학을 가는 대학교는 영국의 캠브리지 대학교이다. 정부는 인터넷 검열을 통해서 해외로 나가는 이메일의 내용 중 일부를 삭제하기로 했다. 이메일의 각 단어 중에서 CAMBRIDGE에 포함된 알파벳은 모두 지우기로 했다. 즉, 어떤 이메일에 LOVA란 단어가 있다면, A는 CAMBRIDGE에 포함된 알파벳이기 때문에, 받아보는 사람은 LOV로 받는다. 이..