Song[coding diary index]

Song 배열에 코딩 흔적 남겨두기

구현 2

백준 9519번 졸려(c++)

구현, 문자열, 시뮬레이션 알고리즘 문제이다.  알고리즘 풀이눈을 깜빡이는 횟수가 최대 10억인거로 보아서, 일반적인 반복문으로는 시간복잡도를 초과할 것이다.그러므로 눈을 깜빡이는 횟수 N을 줄이는 어떤 방법이 존재한다.이때, 주어진 문자열이 다시 원래대로 돌아오는 사이클이 존재하는 것을 알 수 있다.또 사이클이 문자열의 길이와 상관없이 불규칙적인 것 또한 아는 것이 중요하다. 그러므로, 먼저 사이클의 횟수를 구하고 사이클의 횟수보다 눈을 깜빡이는 횟수가 더 많다면둘을 나눠 남는 나머지를 구한다.해당 나머지는 사이클을 돌고 난 뒤, 마저 깜빡이는 수이다.해당 나머지만큼 실제로 문자를 옮겨준다면 문제는 풀린다.-> 문자열의 이동규칙은 코드를 보며 파악하자.#include #include using name..

알고리즘 2024.08.06

백준 16918번 봄버맨(c++)

문제 분석 봄버맨 문제를 읽고, 마땅한 알고리즘이 떠오르지 않았다. 어떤 알고리즘을 활용하기보다는 문제 자체에서 해결하는 구현에 초점을 맞춘 문제로 판단했다. 이는 3가지의 키워드를 잡고 접근하면 쉽게 해결할 수 있다. 초기 설정 이후, 봄버맨은 1초간 아무것도 하지 않는다. 다음 1초간 폭탄이 없는 곳에 폭탄을 설치한다. 폭탄이 터지는 시간은 3초이며, 폭발위치에 폭탄은 연쇄반응을 하지 않는다. 특히 2, 3번의 동작을 반복하기에 2가지 중 가장 중요한 분석이 있다고 생각할 수 있으나, 필자는 1번이 가장 중요하다고 생각한다. -> 1번을 살펴보면 초기 설정 이후 봄버맨은 계속해서 폭탄을 설치하고, 폭발하고를 반복하게 된다. 이 부분이 문제 전체에서 어색하다고 생각했고, 일정 규칙을 만들기 위한 조건이..

알고리즘 2023.11.18
LIST