알고리즘/BOJ 1235

백준 17136번 색종이 붙이기

문제 링크입니다: https://www.acmicpc.net/problem/17136 17136번: 색종이 붙이기 과 같이 정사각형 모양을 한 다섯 종류의 색종이가 있다. 색종이의 크기는 1×1, 2×2, 3×3, 4×4, 5×5로 총 다섯 종류가 있으며, 각 종류의 색종이는 5개씩 가지고 있다. 색종이를 크기가 10×10인 종이 위에 붙이려고 한다. 종이는 1×1 크기의 칸으로 나누어져 있으며, 각각의 칸에는 0 또는 1이 적혀 있다. 1이 적힌 칸은 모두 색종이로 덮여져야 한다. 색종이를 붙일 때는 종이의 경계 밖으로 나가서는 안되고, 겹쳐 www.acmicpc.net 처음에는 제일 큰 색종이부터 덮어주는 그리디 알고리즘으로 접근했는데 예외가 있는 것을 뒤늦게 확인했습니다. 삼성 A형 기출 문제는 무..

알고리즘/BOJ 2019.08.06

백준 17135번 캐슬 디펜스

문제 링크입니다: https://www.acmicpc.net/problem/17135 17135번: 캐슬 디펜스 첫째 줄에 격자판 행의 수 N, 열의 수 M, 궁수의 공격 거리 제한 D가 주어진다. 둘째 줄부터 N개의 줄에는 격자판의 상태가 주어진다. 0은 빈 칸, 1은 적이 있는 칸이다. www.acmicpc.net next_permutation을 이용한 시뮬레이션 문제였습니다. 이런 유형은 삼성 A형에 자주 출제되는 유형이므로 익혀두는 것이 좋을 것 같습니다. 흐름에 따라 코드를 작성하면 되므로 별도의 설명은 주석으로 대체하겠습니다.

알고리즘/BOJ 2019.08.06

백준 17069번 파이프 옮기기 2

문제 링크입니다: https://www.acmicpc.net/problem/17069 17069번: 파이프 옮기기 2 유현이가 새 집으로 이사했다. 새 집의 크기는 N×N의 격자판으로 나타낼 수 있고, 1×1크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 (r, c)로 나타낼 수 있다. 여기서 r은 행의 번호, c는 열의 번호이고, 행과 열의 번호는 1부터 시작한다. 각각의 칸은 빈 칸이거나 벽이다. 오늘은 집 수리를 위해서 파이프 하나를 옮기려고 한다. 파이프는 아래와 같은 형태이고, 2개의 연속된 칸을 차지하는 크기이다. 파이프는 회전시킬 수 있으며, 아래와 같이 www.acmicpc.net 백준 17070번 파이프 옮기기 1(https://jaimemin.tistory.com/1245)에서 범위..

알고리즘/BOJ 2019.08.04

백준 17070번 파이프 옮기기 1

문제 링크입니다: https://www.acmicpc.net/problem/17070 17070번: 파이프 옮기기 1 유현이가 새 집으로 이사했다. 새 집의 크기는 N×N의 격자판으로 나타낼 수 있고, 1×1크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 (r, c)로 나타낼 수 있다. 여기서 r은 행의 번호, c는 열의 번호이고, 행과 열의 번호는 1부터 시작한다. 각각의 칸은 빈 칸이거나 벽이다. 오늘은 집 수리를 위해서 파이프 하나를 옮기려고 한다. 파이프는 아래와 같은 형태이고, 2개의 연속된 칸을 차지하는 크기이다. 파이프는 회전시킬 수 있으며, 아래와 같이 www.acmicpc.net 파이프가 차지하는 두 칸 중 끝 칸만을 확인하면 쉽게 풀 수 있는 브루트포스 문제였습니다. 알고리즘은 상당..

알고리즘/BOJ 2019.08.04

백준 3197번 백조의 호수

문제 링크입니다: https://www.acmicpc.net/problem/3197 3197번: 백조의 호수 문제 두 마리의 백조가 호수에서 살고 있었다. 그렇지만 두 마리는 호수를 덮고 있는 빙판으로 만나지 못한다. 호수는 가로로 R, 세로로 C만큼의 직사각형 모양이다. 어떤 칸은 얼음으로 덮여있다. 호수는 차례로 녹는데, 매일 물 공간과 접촉한 모든 빙판 공간은 녹는다. 두 개의 공간이 접촉하려면 가로나 세로로 닿아 있는 것만 (대각선은 고려하지 않는다) 생각한다. 아래에는 세 가지 예가 있다. ...XXXXXX..XX.XXX ....XXXX.......XX www.acmicpc.net 1500이라는 숫자가 생각보다 큰 숫자라는 것을 깨닫게 된 문제였습니다. 처음에는 단순 BFS로 접근했다가 TLE가..

알고리즘/BOJ 2019.08.01

백준 9376번 탈옥

문제 링크입니다: https://www.acmicpc.net/problem/9376 9376번: 탈옥 문제 상근이는 감옥에서 죄수 두 명을 탈옥시켜야 한다. 이 감옥은 1층짜리 건물이고, 상근이는 방금 평면도를 얻었다. 평면도에는 모든 벽과 문이 나타나있고, 탈옥시켜야 하는 죄수의 위치도 나타나 있다. 감옥은 무인 감옥으로 죄수 두 명이 감옥에 있는 유일한 사람이다. 문은 중앙 제어실에서만 열 수 있다. 상근이는 특별한 기술을 이용해 제어실을 통하지 않고 문을 열려고 한다. 하지만, 문을 열려면 시간이 매우 많이 걸린다. 두 죄수를 탈옥시키기 위해서 열어 www.acmicpc.net 문자열 배열을 전역으로 놓은 상태에서 push_back을 해서 끊임없이 틀렸던 문제였습니다. 이런 유형의 문제는 적지 않게..

알고리즘/BOJ 2019.07.31

백준 1015번 수열 정렬

문제 링크입니다: https://www.acmicpc.net/problem/1015 1015번: 수열 정렬 P[0], P[1], ...., P[N-1]은 0부터 N-1까지(포함)의 수를 한 번씩 포함하고 있는 수열이다. 수열 P를 길이가 N인 배열 A에 적용하면 길이가 N인 배열 B가 된다. 적용하는 방법은 B[P[i]] = A[i]이다. 배열 A가 주어졌을 때, 수열 P를 적용한 결과가 비내림차순이 되는 수열을 찾는 프로그램을 작성하시오. 비내림차순이란, 각각의 원소가 바로 앞에 있는 원소보다 크거나 같을 경우를 말한다. 만약 그러한 수열이 여러개라면 사전순 www.acmicpc.net 제가 언어 능력이 부족해서 그런지 문제를 이해하는데 한참 걸린 문제였습니다. 문제에서 요구하는 알고리즘은 아래와 같습..

알고리즘/BOJ 2019.07.30

백준 10174번 팰린드롬

문제 링크입니다: https://www.acmicpc.net/problem/10174 10174번: 팰린드롬 문제 팰린드롬은 앞으로 읽으나 뒤로 읽으나 똑같은 단어나 숫자들을 말한다. 일반적으로 대소문자를 구분하지 않지만, 공백은 구분한다. 다음은 팰린드롬의 예시이다. Anna Harrah Arora Nat tan 9998999 123 321 \$\$\$&&\$\$\$ 모든 라인에 대해 팰린드롬인지 아닌지를 구분하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수 n이 주어진다. 각 테스트 케이스는 한 줄의 텍스트로 이루어져있으며, 비어있는 줄은 없 www.acmicpc.net 일반적으로 대소문자를 구분하지 않는다고 하였으므로 toupper 메서드를 사용했습니다.

알고리즘/BOJ 2019.07.29

백준 15652번 N과 M (4)

문제 링크입니다: https://www.acmicpc.net/problem/15652 15652번: N과 M (4) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해야 한다. www.acmicpc.net N과 M (1)과 유사한 문제였습니다.(https://jaimemin.tistory.com/1237) 동일한 숫자가 나올 수 있으니까 전에 배열에 넣었던 숫자부터 반복문을 돌리는 것이 핵심이였습니다.

알고리즘/BOJ 2019.07.14