본문 바로가기

Algorithm/Implementation

(C++) - 백준(BOJ) 1598 : 꼬리를 무는 숫자 나열

반응형

https://www.acmicpc.net/problem/1598

 

1598번: 꼬리를 무는 숫자 나열

첫째 줄에 원숭이가 생각한 두 개의 자연수가 주어진다. 각 수는 10,000,000 이하이다.

www.acmicpc.net

구현 문제였습니다.

 

📕 풀이방법

📔 입력 및 초기화

 1. 두 숫자를 입력받을 변수 n1, n2를 선언해주고 각 숫자의 행,열 좌표를 구해주기 위한 struct Coord를 선언해줍니다.

 2. n1, n2를 입력해줍니다.

📔 풀이과정

1.  수에 대해 getCoord함수를 수행합니다.  1-1. 행, 열을 선언합니다.  1-2. 행은 num % 4입니다. 그 중 4번째 행인 경우 나머지가 0이므로 r = 4로 처리해줍니다.  1-3. 열은 num / 4입니다. 그 중 4번째 행인 경우 한 칸 더 오른쪽으로 간것으로 처리되므로 1을 제합니다.  1-4. 계산된 r, c의 구조체를 반환해줍니다.

 

2. 반환된 두 구조체로부터 직각거리를 구합니다.   

 

 

📔 정답출력

 2.에서 각 행, 열의 차이의 절댓값을 각각 더해준 결과를 출력해줍니다.


📕 Code

#include <bits/stdc++.h>
using namespace std;
struct Coord {int r, c; };
int n1, n2;

Coord getCoord(int num){
    int r, c;
    r = num % 4;
    if(!r) r = 4;
    c = num / 4;
    if(num % 4 == 0) c--;
    return {r, c};
}

int main(){
    cin >> n1 >> n2;
    Coord x = getCoord(n1);
    Coord y = getCoord(n2);
    cout << abs(x.r - y.r) + abs(x.c - y.c);
}