https://www.acmicpc.net/problem/14500

 

14500번: 테트로미노

폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변

www.acmicpc.net

완전 탐색 문제다. 다른 풀이가 있을까 생각해보았지만 결국 해당 패턴에 대한 회전과 대칭을 고려해 모든 범위에 대해 비교를 해야 한다.

 

풀이

해당 패턴을 담은 배열을 생성하여 입력받은 지도의 모든 좌표를 돌면서 최댓값을 갱신하면 된다. 패턴은 좌측 상단을 기점으로 x축과 y축의 범위를 지정하였다. 패턴을 생성할수있다면 최대값을 갱신, 패턴이 범위 밖의 좌표라면 갱신하지 않는다.

 

정답 코드

처음에 대칭에 대한 조건을 확인하지 않아 오답 판정을 받았다. 해답을 생각해내는 시간보다 패턴을 배열로 옮기는 데에 더 많은 시간이 들었던 문제였다.

'Problem Solving > BOJ' 카테고리의 다른 글

[16234] 인구 이동  (0) 2022.11.16
[15685] 드래곤 커브  (0) 2022.11.15
[21610] 마법사 상어와 비바라기  (0) 2022.11.11
[14499] 주사위 굴리기  (0) 2022.11.10
[21608] 상어 초등학교  (0) 2022.11.09

https://www.acmicpc.net/problem/1195

 

1195번: 킥다운

첫 줄에는 첫 번째 기어 파트를 나타내는 1과 2로 구성된 문자열이 주어진다. 두 번째 줄에는 마찬가지로 두 번째 기어 파트를 나타내는 1, 2로 구성된 문자열이 주어진다. 여기서 1은 홈을, 2는

www.acmicpc.net

완전 탐색 문제다. 두 배열 비교를 어떤 식으로 수행하는지 고민해야 하는 문제.

 

풀이

두 배열 중 짧은 배열을 덱을 사용하여 원소를 하나씩 담아낸 뒤 긴 배열과 비교, 짧은 배열의 원소를 모두 담아내었다면 긴 배열의 길이만큼 1을 추가하여 비교하였다. 값 갱신은 Bool 변수를 사용하여 두 원소가 모두 2일 경우에는 갱신을 하지 않는 방법으로 탐색하였다.

 

스위프트에는 기본적으로 제공되는 덱 구조가 없어서 배열을 사용하여 insert(_ newElement:Int , at:Int)를 사용했다. 시간 초과가 걱정되었지만 각 입력 배열의 길이가 최대 100으로 짧은 편에 속했고, 시간도 넉넉했기에 통과할 수 있었다. 이후 더 빠른 동작이 가능한지 궁금하여 배열을 합치는 방식으로 바꾸어 보았지만 큰 차이는 없었다.

 

정답 코드

'Problem Solving > BOJ' 카테고리의 다른 글

[1245] 농장 관리  (0) 2022.11.04
[1148] 단어 만들기  (0) 2022.11.03
[1915] 가장 큰 정사각형  (0) 2022.11.01
[1347] 미로 만들기  (0) 2022.10.31
[1388] 바닥 장식  (0) 2022.10.31

+ Recent posts