전체 글 223

[C] 특수 입력

연속된 숫자 받기 0000010010 0010010101 0011110100 이렇게 생긴 입력을 받을 땐, 단순히 이중 for 루프에 "%d"로 받을 수 없다. 이걸 하나하나 쪼개서 받고 싶으면 1. 포맷 이용 scanf("%1d", &a[i][j]); 이렇게 받던가 int M; int ma[101][101]; scanf("%d", &M); for (int i = 0; i < M; i++) { for (int j = 0; j < M; j++) { scanf("%1d", &ma[i][j]); } } 아니면 2. string으로 받아야 한다. char arr[100][101]; for(int i = 0; i

언어/C&C++ 응용 2021.08.24

유클리드 호제법을 이용한 최대공약수, 최대공배수

유클리드 호제법 2개의 정수의 최대 공약수와 최대 공배수를 구하는 방법이다. 두 개의 정수 A, B가 있을 때 (A>=B) A%B, 즉 A를 B로 나눴을 때 나머지 R가 있을 때, A와 B의 최대공약수가 B와 R의 최대공약수와 같다는 성질을 이용하는 것이다. 그래서 A와 B의 최대공약수를 구하기 위해서는 A%B, B%R을 반복하면 된다. int main(void) { int n1, n2; int max, min; int tmp; scanf("%d %d", &n1, &n2); if (n1 > n2) { max = n1; min = n2; } else { max = n2; min = n1; } while (min) { int tmp = max % min; max = min; min = tmp; } print..

[백준] 11729. 하노이 탑 이동 순서

https://www.acmicpc.net/problem/11729 11729번: 하노이 탑 이동 순서 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 www.acmicpc.net 재귀의 기본 of 기본인 하노이 탑 옮기기이다. #include #include using namespace std; int cnt; vector answer; void Hanoi(int from, int by, int to, int num){ if(num>0){ Hanoi(from, to, by, num-1); answer.push_back(make_pair(from, to)); c..