www.acmicpc.net/problem/1062 1062번: 가르침 첫째 줄에 단어의 개수 N과 K가 주어진다. N은 50보다 작거나 같은 자연수이고, K는 26보다 작거나 같은 자연수 또는 0이다. 둘째 줄부터 N개의 줄에 남극 언어의 단어가 주어진다. 단어는 영어 소문 www.acmicpc.net 알파벳을 배운 남극 학생들이 어떤 조합의 알파벳일 때 가장 많은 단어를 배우는지에 대한 문제입니다. 처음에는 가르친 알파벳 순으로 bit로 표현한 뒤 입력 단어도 bit로 표현하여 비트마스킹의 xor 결과가 0이냐 아니냐로 나눠서 생각했지만, 이것은 더 많이 배우고 입력 단어가 짧은 경우 0은 아니지만 모든 입력 단어를 읽을 수 있었습니다. 그래서 dfs를 이용해 해당 위치의 알파벳을 배웠는지 유무와 c..
www.acmicpc.net/problem/17135 17135번: 캐슬 디펜스 첫째 줄에 격자판 행의 수 N, 열의 수 M, 궁수의 공격 거리 제한 D가 주어진다. 둘째 줄부터 N개의 줄에는 격자판의 상태가 주어진다. 0은 빈 칸, 1은 적이 있는 칸이다. www.acmicpc.net 캐슬 디펜스 게임에서 없앨 수 있는 최대 적의 수를 구하는 문제입니다. 게임 규칙 1. 궁수는 3명이다. 궁수는 맵의 가장 아래에 놓인다. (x좌표가 M이상이면 안 됨(index시작 0 기준)) 2. 궁수는 거리가 D 이내에 있는 적만 없앨 수 있다. 그 중 거리가 가장 짧은 적을 없애고, 그 중 가장 왼쪽의 적을 없앤다. (x좌표 가장 작은 적) 3. 적이 1칸씩 내려온다. 내려온 위치가 맵을 벗어난 것(성에 도달)이면..
www.acmicpc.net/problem/17087 17087번: 숨바꼭질 6 수빈이는 동생 N명과 숨바꼭질을 하고 있다. 수빈이는 현재 점 S에 있고, 동생은 A1, A2, ..., AN에 있다. 수빈이는 걸어서 이동을 할 수 있다. 수빈이의 위치가 X일때 걷는다면 1초 후에 X+D나 X-D로 이 www.acmicpc.net 오늘의 자기 전 간단한 문제는 이 문제이다. 동생의 위치와 수빈이의 위치 차의 최대 공약수를 구하면 된다. 코드는 다음과 같다. import math n, s = map(int,input().split()) arr = list(map(int,input().split())) num = abs(arr[0]-s) for a in arr: tmp = abs(a-s) num = math...
www.acmicpc.net/problem/7682 7682번: 틱택토 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 줄은 9개의 문자를 포함하며, 'X', 'O', '.' 중 하나이다. '.'은 빈칸을 의미하며, 9개의 문자는 게임판에서 제일 윗 줄 왼쪽부터의 순서이다. 입 www.acmicpc.net X, O 말을 번갈아 놓으며 가능한 게임인지 아닌지를 판단하는 경우이다. 테스트케이스로 주어진 입력이 좀 애매하다. 행 하나가 게임 하나이고 입력은 왼쪽 상단부터 오른쪽으로 그리고 그 다음 행으로 입력이 주어지는 것이다. (입력 : arr[0][0], [0][1], [0][2], [1][0], ..., [2][2] 인것) 케이스를 잘 나누면 if문 만으로 쉽게 풀 수 있는 문제이다. (valid를..
www.acmicpc.net/problem/6087 6087번: 레이저 통신 크기가 1×1인 정사각형으로 나누어진 W×H 크기의 지도가 있다. 지도의 각 칸은 빈 칸이거나 벽이며, 두 칸은 'C'로 표시되어 있는 칸이다. 'C'로 표시되어 있는 두 칸을 레이저로 통신하기 위해서 www.acmicpc.net 주어진 맵에서 C끼리 만날려면 빛이 몇 번 꺾여야하는지를 구하는 문제입니다. 처음 시작방향은 상하좌우 모두로 움직일 수 있고, 빛은 직진 또는 90도로 꺾는 것 2가지 경우만 가집니다. (반대방향은 이동 불가) 그러므로 bfs를 이용하여 C에서 C로 이동 경로 중 꺾이는 횟수가 최소가 되도록 구하면 됩니다. 우선순위 큐를 이용하여 해당 지점까지 도달하기에 빛이 꺾인 횟수는 check로 잡았습니다. 그리..