시뮬레이션 65

백준 20058번 마법사 상어와 파이어스톰

문제 링크입니다: www.acmicpc.net/problem/20058 20058번: 마법사 상어와 파이어스톰 마법사 상어는 파이어볼과 토네이도를 조합해 파이어스톰을 시전할 수 있다. 오늘은 파이어스톰을 크기가 2N × 2N인 격자로 나누어진 얼음판에서 연습하려고 한다. 위치 (r, c)는 격자의 r행 c www.acmicpc.net 기존 마법사 상어 문제들과 비슷한 유형이었습니다. 알고리즘은 아래와 같습니다. 1. 격자를 2^L * 2^L 크기의 부분 격자로 나눈 뒤 시계 방향으로 돌려줍니다. (rotate 메서드) 2. 파이어스톰을 시전합니다. (firestorm 메서드) 3. 1 ~ 2번 과정을 Q번 반복해줍니다. 4. 격자 내 모든 얼음 크기의 합을 구한 뒤 출력해주고 (getIceCnt 메서드)..

알고리즘/BOJ 2021.05.03

백준 20057번 마법사 상어와 토네이도

문제 링크입니다: www.acmicpc.net/problem/20057 20057번: 마법사 상어와 토네이도 마법사 상어가 토네이도를 배웠고, 오늘은 토네이도를 크기가 N×N인 격자로 나누어진 모래밭에서 연습하려고 한다. 위치 (r, c)는 격자의 r행 c열을 의미하고, A[r][c]는 (r, c)에 있는 모래의 양을 www.acmicpc.net 기존 마법사 상어 문제들처럼 주어진 과정만 수행해주면 됩니다. 알고리즘은 아래와 같습니다. 1. 토네이도가 한 방향으로 이동하는 길이는 방향을 두 번 바꿀 때마다 1증가하고, 방향이 바뀔 때는 반시계방향으로 90도 돕니다. 2. 모래가 이동했을 때 분배되는 비율을 5 * 5 이차원 배열에 저장하고, 방향이 바뀔 때마다 반시계방향으로 90도 회전시켜줍니다. (sa..

알고리즘/BOJ 2021.05.01

백준 20056번 마법사 상어와 파이어볼

문제 링크입니다: www.acmicpc.net/problem/20056 20056번: 마법사 상어와 파이어볼 첫째 줄에 N, M, K가 주어진다. 둘째 줄부터 M개의 줄에 파이어볼의 정보가 한 줄에 하나씩 주어진다. 파이어볼의 정보는 다섯 정수 ri, ci, mi, si, di로 이루어져 있다. 서로 다른 두 파이어볼의 위치 www.acmicpc.net 문제에서 주어진 과정대로 풀면 어렵지 않게 풀 수 있는 문제였습니다. 알고리즘은 아래와 같습니다. 1. 우선, 데이터를 저장할 자료구조를 정해야합니다. 1.1 저 같은 경우 파이어볼들이 위치한 좌표를 저장하는 벡터 1.2 같은 좌표에 여러개의 파이어볼이 위치할 수 있으므로 좌표가 key, 해당 좌표에 위치한 파이어볼들의 정보를 가진 벡터가 value인 m..

알고리즘/BOJ 2021.04.30

백준 21610번 마법사 상어와 비바라기

문제 링크입니다: www.acmicpc.net/problem/21610 21610번: 마법사 상어와 비바라기 마법사 상어는 파이어볼, 토네이도, 파이어스톰, 물복사버그 마법을 할 수 있다. 오늘 새로 배운 마법은 비바라기이다. 비바라기를 시전하면 하늘에 비구름을 만들 수 있다. 오늘은 비바라기 www.acmicpc.net 문제에서 주어진 과정대로 풀면 쉽게 풀 수 있는 문제였습니다. 함수명과 주석을 보시면 쉽게 이해가 될만한 코드이므로 설명은 생략하겠습니다. 개발환경:Visual Studio 2017 지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

알고리즘/BOJ 2021.04.29

백준 21608번 상어 초등학교

문제 링크입니다: www.acmicpc.net/problem/21608 21608번: 상어 초등학교 상어 초등학교에는 교실이 하나 있고, 교실은 N×N 크기의 격자로 나타낼 수 있다. 학교에 다니는 학생의 수는 N2명이다. 오늘은 모든 학생의 자리를 정하는 날이다. 학생은 1번부터 N2번까지 번호 www.acmicpc.net 단순 구현 문제였습니다. 알고리즘은 아래와 같습니다. 1. 각 학생마다 좋아하는 학생들이 4명이 있으므로 해당 정보를 map 자료구조로 저장합니다. (likeFriends) 2. 입력받은 학생 순서로 자리를 배치하는데 문제에서 주어진 규칙대로 배치를 진행하면 됩니다. 비어있는 칸 중에서 좋아하는 학생이 인접한 칸에 가장 많은 칸으로 자리를 정한다. 1을 만족하는 칸이 여러 개이면, ..

알고리즘/BOJ 2021.04.28

백준 3954번 Brainf**k 인터프리터

문제 링크입니다: https://www.acmicpc.net/problem/3954 3954번: Brainf**k 인터프리터 각 테스트 케이스에 대해서, 프로그램이 종료된다면 "Terminates"를, 무한 루프에 빠지게 된다면 "Loops"를 출력한다. 무한 루프에 빠졌을 때는, 프로그램의 어느 부분이 무한 루프인지를 출력한다. ([ www.acmicpc.net 개요 주어진 조건대로만 풀면 되는 문제였지만 무한루프라는 정의에 대해 생각해봐야하는 문제였습니다.기존에 작성한 코드는 시스템 케이스 데이터들이 약해서 운이 좋게 AC를 받았지만, 고수분들의 채점 정정 요청에 따라 재채점 결과 WA를 받았습니다. 기존 코드는 아래와 같습니다. 기존의 문제점 기존 코드의 문제점은 프로그램 명령어를 5천만번만 실행한..

알고리즘/BOJ 2021.01.19

백준 10837번 동전 게임

문제 링크입니다: www.acmicpc.net/problem/10837 10837번: 동전 게임 첫 줄에 게임의 라운드 수를 나타내는 정수 K(1 ≤ K ≤ 1,000)가 주어진다. 두 번째 줄에는 입력의 개수를 나타내는 정수 C(1 ≤ C ≤ 100,000)가 주어진다. 다음 이어지는 C개의 줄 각각에는 하나의 입� www.acmicpc.net 문제의 규칙들을 잘 읽으면 무난하게 풀 수 있는 문제였습니다. 3개의 규칙들 중 핵심 내용은 아래와 같습니다. 1. 항상 영희가 먼저 던진다. 2. 한 명이 남은 기회에 모든 점수를 얻더라도 상대방이 현재까지 얻은 점수보다 작게 되면 게임 도중 어떤 시점에서도 게임은 바로 끝난다. C개의 M, N의 쌍이 주어질 때, (M, N)의 유형은 크게 세 가지입니다. 1..

알고리즘/BOJ 2020.09.03

백준 1052번 물병

문제 링크입니다: https://www.acmicpc.net/problem/1052 1052번: 물병 지민이는 N개의 물병을 가지고 있다. 각 물병에는 물을 무한대로 부을 수 있다. 처음에 모든 물병에는 물이 1리터씩 들어있다. 지민이는 이 물병을 또 다른 장소로 옮기려고 한다. 지민이는 한 번 www.acmicpc.net 이 문제의 경우 직접 여러 케이스들을 계산해보며 규칙을 구해야 하는 문제였습니다. 우선, 물통을 하나도 사지 않고 최대로 물병을 합쳤을 때 남은 물병의 수는 아래와 같습니다. 1. N=2: [1, 1] -> [2] 한병 2. N=3: [1, 1, 1] -> [2, 1] 두병 3. N=4: [1, 1, 1, 1] -> [2, 2] -> [4] 한병 4. N=5: [1, 1, 1, 1, ..

알고리즘/BOJ 2020.08.21

백준 2160번 그림 비교

문제 링크입니다: https://www.acmicpc.net/problem/2160 2160번: 그림 비교 N(2≤N≤50)개의 그림이 있다. 각각의 그림은 5×7의 크기이고, 두 가지 색으로 되어 있다. 이때 두 가지의 색을 각각 ‘X’와 ‘.’으로 표현하기로 하자. 이러한 그림들이 주어졌을 때, 가장 비슷�� www.acmicpc.net 간단한 시뮬레이션 문제였습니다. 그림을 입력받는 과정에서 산수 실수를 해서 아쉽게도 한번 틀렸지만 대부분의 사람들은 한번에 AC를 받았을 것이라고 생각합니다. 개발환경:Visual Studio 2019 지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

알고리즘/BOJ 2020.08.09

백준 19238번 스타트 택시

문제 링크입니다: https://www.acmicpc.net/problem/19238 19238번: 스타트 택시 첫 줄에 N, M, 그리고 초기 연료의 양이 주어진다. (2 ≤ N ≤ 20, 1 ≤ M ≤ N2, 1 ≤ 초기 연료 ≤ 500,000) 연료는 무한히 많이 담을 수 있기 때문에, 초기 연료의 양을 넘어서 충전될 수도 있다. 다 www.acmicpc.net 행과 열을 헷갈려서 한참을 틀렸던 문제였습니다. * 행은 세로 즉 y축, 열은 가로 즉 x축이라는 것을 명심합시다... 알고리즘은 아래와 같습니다. 1. 문제의 조건에 모든 출발지는 서로 다르며, 각 손님의 출발지와 목적지는 다르다. 라는 내용이 명시되어 있으므로 map을 선언하여 출발지를 key, 목적지를 value로 입력받습니다. 이렇게..

알고리즘/BOJ 2020.06.29