본문 바로가기

백준128

[백준 11729/c++] 하노이의 탑 이동 순서 재귀문제의 가장 유명한 하노이의 탑 문제이다 하노이의 탑 문제의 핵심은 가장 아래의 원판부터 하나씩 옮겨서 이동해야 한다는 점이다 1. 그러기 위해서는 원판의 총 개수 n 개에서 가장 아래 하나를 뺀 n-1개를 임시위치에 모두 옮겨야 한다 2. 원래 위치에서 가장 아래에 있는 원판을 목표 위치로 이동시킨다 3. 임시 위치에 쌓인 n-1개의 원판을 목표 위치로 이동시킨다 4. 이걸 원판 수 n만큼 반복한다 즉, 위의 알고리즘을 가진다 이동을 출력으로 보여줘야 하므로 원판수 n외에도 원래위치, 임시위치, 목표위치 를 인자로 갖는 함수를 만든다 void hanoi(int n인자개수, string from원래위치, string to목표위치, string res임시위치){ // 순서는 정하기 나름 hanoi(n-.. 2022. 7. 3.
[백준 12871/c++] 무한 문자열 문자열 a와 b를 무한히 늘렸을때 두 문자열은 같은지를 묻는 문제이다 a길이와 b길이의 최소공배수를 구하고 그 길이가 될때까지 각각 자기복제를 하여 새로 만든 두 문자열이 같은지를 비교하면 되는 문제이다 https://www.acmicpc.net/problem/12871 12871번: 무한 문자열 첫째 줄에 s, 둘째 줄에 t가 주어진다. 두 문자열 s와 t의 길이는 50보다 작거나 같은 자연수이고, 알파벳 소문자로만 이루어져 있다. www.acmicpc.net #include using namespace std; int gcd(int x, int y){ int z; while(y!=0){ z=x%y; x=y; y=z; } return x; } int lcm(int x, int y){ return x*y.. 2022. 7. 2.
[백준 1181/c++] 단어 정렬 중복을 허락하지 않고 커스텀 조건으로 정렬 - 아하 set을 쓰면 되겠군! set을 사용한 커스텀 정렬은 처음 써보았다 set의 템플릿에 맞게 struct 의 내부를 원하는 조건으로 커스텀해준뒤 입력을 받아 set에 넣으면 원하는 조건으로 정렬이 된다. 그대로 출력하면 완성이다! https://www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net #include using namespace std; struct tok { bool operator() (.. 2022. 7. 1.
[백준 10610/c++] 30 자료형의 표현 범위를 넘어선 거대한 수를 다룰때 string 을 써서 다뤄야 하는 법을 알려주는 문제였다 10^15 개의 자리수를 갖는 숫자라니 long long 으로도 표현불가하다. c++ 에서는 string 으로 다루자! 처음에 풀때는 각 자리의 조합을 바꿔서 3으로 나눌 수 있는 것들을 찾았지만 시간초과가 걸렸고 다음 방법으로 0을 제외한 2자리 3자리(2자리가 에러가 떠서...)가 3으로 나누어 떨어지는 경우의 수에서의 최대값을 구하려 했었지만... 출력 오류가 떠서 다시 처음부터 로직을 생각해야만 했다 모든 자리수의 합이 3으로 나누어지는 경우가 조건이었다;;; 자고일어나서 생각하니 이렇게 간단하게 풀릴줄이야... https://www.acmicpc.net/problem/10610 10610번:.. 2022. 7. 1.