백준알고리즘

    [백준] 1780번 종이의 개수

    3의 제곱만큼 늘어나는 종이에서 같은 숫자를 가진 3^n 의 종이의 개수 -1,0,1를 각각 찾는 문제이다. 처음에 브루트포스를 접근을 하려 했지만, 시간이 어마어마하게 나올 것 같아서 분할 정복을 도입해봤다. 다행히 문제에 3^N 으로 늘어나며, 종이를 자를때도 3^N이라는 규칙에 맞게 자르기 때문에 쉽게 규칙을 찾을 수 있었다. 우선 findPaper 함수를 만들어 NXN의 크기부터 검사를 하도록 하고, 같은 숫자로 다 이루어지지 않을 시에 (N/3)X(N/3)으로 N개만큼 분할해서 다시 구하도록 재귀 함수를 구현해주었다. firstx와 firsty를 이용해 규칙에 맞게 그 종이를 구성하는 첫번째 인자만 가져올 수 있도록 해주었다. 또한 구성된 숫자를 검사할때는 checkNum 함수를 이용해서 쉽게 ..

    [백준] 2503번 숫자 야구

    숫자 야구라는 타이틀만 보고 우리가 종종 해오던 쉬운 게임이라 생각하고 문제를 읽었더니, 알고리즘으로 짜기에는 복잡해보였다. 먼저 1~9의 숫자 중에서 선택을 해야했기 때문에 3자리 숫자 중 각 숫자에 맞게 겹치는 숫자들이 없어야하며, 0도 포함해서는 안됐었다. 먼저 각 숫자를 뽑아내기 위해 10의 제곱으로 나눠 각 자리의 수를 뽑는 방식을 택했었다. 그리고 배열에 넣고, 다른 숫자들과 비교하는 식으로 하였다. Strike는 각 자리에 맞아야하며, 두 숫자가 동일해야하고, Ball은 각 자리가 틀려야하며 두 숫자가 동일해야하므로 그에 맞게 조건문을 맞혀주었다. 개선해야할 점 : 각 숫자를 추출해내기 위해서 노가다 방식으로 일일히 다 뽑아내었는데 to_String을 사용하여 쉽게 뽑아낼 수 있다는 사실. ..