알고리즘/BOJ 1235

백준 15360번 Rasvjeta

문제 링크입니다: https://www.acmicpc.net/problem/15360 15360번: Rasvjeta It is Advent season. There are M street lights in a street N metres long (the meters of the street are denoted with numbers from 1 to N). Each of the lights lights up the meter of the street it’s located in and K meters to the left and to the right of that www.acmicpc.net 최근에 삼성 코딩테스트 문제만 풀어서 그런지 쉬운 문제였음에도 불구하고 한참을 헤맨 문제였습니다. 핵심은, ..

알고리즘/BOJ 2019.05.03

백준 4574번 스도미노쿠

문제 링크입니다: https://www.acmicpc.net/problem/4574 4574번: 스도미노쿠 문제 스도쿠가 세계적으로 유행이 된 이후에, 비슷한 퍼즐이 매우 많이 나왔다. 게임 매거진 2009년 7월호에는 스도쿠와 도미노를 혼합한 게임인 스도미노쿠가 소개되었다. 이 퍼즐은 스도쿠 규칙을 따른다. 스도쿠는 9×9 크기의 그리드를 1부터 9까지 숫자를 이용해서 채워야 한다. 스도쿠는 다음과 같은 조건을 만족하게 숫자를 채워야 한다. 각 행에는 1부터 9까지 숫자가 하나씩 있어야 한다. 각 열에는 1부터 9까지 숫자가 하나씩 있어야 한다. 3×3크기 www.acmicpc.net 스도쿠 문제인데 칸 하나하나에 숫자를 넣는 대신 2 * 1 혹은 1 * 2 도미노를 넣어야하는 복잡한 문제였습니다. 우..

알고리즘/BOJ 2019.05.03

백준 3568번 iSharp

문제 링크입니다: https://www.acmicpc.net/problem/3568 3568번: iSharp 문제 선영이는 C, C++, Java와는 다른 아주 세련된 언어를 만들었다. 선영이는 이 아름답고 예술적인 언어의 이름을 i#으로 정했다. i#은 기본 변수형과 배열([]), 참조(&), 포인터(*)를 제공한다. 배열, 참조, 포인터는 순서에 상관없이 혼합해서 사용할 수 있다. 즉, int의 참조의 참조의 배열의 포인터도 올바른 타입이다. int&&[]* i#은 여러 개의 변수를 한 줄에 정의할 수 있다. 공통된 변수형을 제일 먼저 쓰고, 그 다음에 각 www.acmicpc.net 간단한 문자열 처리 문제였습니다. 알고리즘은 아래와 같습니다. 1. 전처리를 통해 공통된 변수형과 각각의 추가적인 변..

알고리즘/BOJ 2019.05.02

백준 2290번 LCD Test

문제 링크입니다: https://www.acmicpc.net/problem/2290 2290번: LCD Test 문제 지민이는 새로운 컴퓨터를 샀다. 하지만 새로운 컴퓨터에 사은품으로 온 LC-디스플레이 모니터가 잘 안나오는 것이다. 지민이의 친한 친구인 지환이는 지민이의 새로운 모니터를 위해 테스트 할 수 있는 프로그램을 만들기로 하였다. 입력 첫째 줄에 두 개의 정수 s와 n이 들어온다. (1 ≤ s ≤ 10, 0 ≤ n ≤ 9,999,999,999)이다. n은 LCD 모니터에 나타내야 할 수 이며, s는 크기이다. 출력 길이가 s인 '-'와 '|'를 이용해서 www.acmicpc.net 처음에는 이차원 배열을 선언하여 표시하려고 했지만 n이 최대 9,999,999,999이기 때문에 이는 불가능했습니..

알고리즘/BOJ 2019.05.02

백준 3190번 뱀

문제 링크입니다: https://www.acmicpc.net/problem/3190 3190번: 뱀 문제 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임은 NxN 정사각 보드위에서 진행되고, 몇몇 칸에는 사과가 놓여져 있다. 보드의 상하좌우 끝에 벽이 있다. 게임이 시작할때 뱀은 맨위 맨좌측에 위치하고 뱀의 길이는 1 이다. 뱀은 처음에 오른쪽을 향한다. 뱀은 매 초마다 이동을 하는데 다음과 같은 규칙을 따 www.acmicpc.net 재밌는 시뮬레이션 문제였습니다. 뱀의 머리와 꼬리의 좌표를 모두 파악해야하기 때문에 양방향에서 삽입, 삭제가 가능한 덱을 이용..

알고리즘/BOJ 2019.05.01

백준 14499번 주사위 굴리기

문제 링크입니다: https://www.acmicpc.net/problem/14499 14499번: 주사위 굴리기 첫째 줄에 지도의 세로 크기 N, 가로 크기 M (1 ≤ N, M ≤ 20), 주사위를 놓은 곳의 좌표 x y(0 ≤ x ≤ N-1, 0 ≤ y ≤ M-1), 그리고 명령의 개수 K (1 ≤ K ≤ 1,000)가 주어진다. 둘째 줄부터 N개의 줄에 지도에 쓰여 있는 수가 북쪽부터 남쪽으로, 각 줄은 서쪽부터 동쪽 순서대로 주어진다. 주사위를 놓은 칸에 쓰여 있는 수는 항상 0이다. 지도의 각 칸에 쓰여 있는 수는 10을 넘지 않는 자연수 또는 0이다. 마 www.acmicpc.net 어느 정도의 공간지각능력을 요구하는 문제였습니다. 주사위를 돌리면 해당 면이 어느 위치에 가는지를 잘 파악하고..

알고리즘/BOJ 2019.04.30

백준 5373번 큐빙

문제 링크입니다: https://www.acmicpc.net/problem/5373 5373번: 큐빙 문제 루빅스 큐브는 삼차원 퍼즐이다. 보통 루빅스 큐브는 3×3×3개의 작은 정육면체로 이루어져 있다. 퍼즐을 풀려면 각 면에 있는 아홉 개의 작은 정육면체의 색이 동일해야 한다. 큐브는 각 면을 양방향으로 90도 만큼 돌릴 수 있도록 만들어져 있다. 회전이 마친 이후에는, 다른 면을 돌릴 수 있다. 이렇게 큐브의 서로 다른 면을 돌리다 보면, 색을 섞을 수 있다. 이 문제에서는 루빅스 큐브가 모두 풀린 상태에서 시작한다. 윗 면은 흰색, 아랫 면은 노란 www.acmicpc.net 단순 시뮬레이션 문제지만 접근 방법을 잘 생각하고 풀어야하는 문제였습니다. 저는 접근방법을 레바스님(https://reba..

알고리즘/BOJ 2019.04.29

백준 14503번 로봇 청소기

문제 링크입니다: https://www.acmicpc.net/problem/14503 14503번: 로봇 청소기 로봇 청소기가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타낼 수 있으며, 1×1크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 벽 또는 빈 칸이다. 청소기는 바라보는 방향이 있으며, 이 방향은 동, 서, 남, 북중 하나이다. 지도의 각 칸은 (r, c)로 나타낼 수 있고, r은 북쪽으로부터 떨어진 칸의 개수, c는 서쪽으로 부터 떨어진 칸의 개수이다. 로봇 청소기는 다음 www.acmicpc.net 흥미로운 문제였습니다. 핵심은 네 방향 다 청소할 곳이 없을 때 이미 청소한 곳이여도 돌아올 수 있다는 것이였습..

알고리즘/BOJ 2019.04.28

백준 15662번 톱니바퀴(2)

문제 링크입니다: https://www.acmicpc.net/problem/15662 15662번: 톱니바퀴 (2) 총 8개의 톱니를 가지고 있는 톱니바퀴 T개가 아래 그림과 같이 일렬로 놓여져 있다. 또, 톱니는 N극 또는 S극 중 하나를 나타내고 있다. 톱니바퀴에는 번호가 매겨져 있는데, 가장 왼쪽 톱니바퀴가 1번, 그 오른쪽은 2번, ..., 가장 오른쪽 톱니바퀴는 T번이다. 아래 그림은 T가 4인 경우이다. 이때, 톱니바퀴를 총 K번 회전시키려고 한다. 톱니바퀴의 회전은 한 칸을 기준으로 한다. 회전은 시계 방향과 반시계 방향이 있고, 아래 그림과 같이 회전한다 www.acmicpc.net 최근에 비슷한 문제를 푼 적이 있어서 쉽게 풀 수 있었던 문제였습니다. 회전시킬 톱니바퀴를 회전시키지 않은 ..

알고리즘/BOJ 2019.04.27

백준 16235번 나무 재테크

문제 링크입니다: https://www.acmicpc.net/problem/16235 16235번: 나무 재테크 부동산 투자로 억대의 돈을 번 상도는 최근 N×N 크기의 땅을 구매했다. 상도는 손쉬운 땅 관리를 위해 땅을 1×1 크기의 칸으로 나누어 놓았다. 각각의 칸은 (r, c)로 나타내며, r은 가장 위에서부터 떨어진 칸의 개수, c는 가장 왼쪽으로부터 떨어진 칸의 개수이다. r과 c는 1부터 시작한다. 상도는 전자통신공학과 출신답게 땅의 양분을 조사하는 로봇 S2D2를 만들었다. S2D2는 1×1 크기의 칸에 들어있는 양분을 조사해 상도에게 전송하고, 모든 www.acmicpc.net 같은 학교 학우들이 삼성 코딩 테스트를 보는 날이라 저도 한번 풀어봤습니다. 간단한 시뮬레이션 문제였습니다. 봄,..

알고리즘/BOJ 2019.04.14