# data[].attributes.headline
안녕 나는 3번 못 푼 예쓰맨

# data[].attributes.subject
안녕 나는 3번 못 푼 예쓰맨

# data[].attributes.body
ㅣ커플 죽

# data[].attributes.body
아니 ㅅㅂ 삼각형을 어떻게 만들으라는거에요

# data[].attributes.body
힌트입니다

# data[].attributes.attachment_link.readable_text
안녕하세요. 여행벌입니다.
오늘은 알고리즘 문제를 풀 때 자주 쓰이는

각 자릿수 구하기 알고리즘에 대해서 포스팅해보도록 하겠습니다.

알고리즘 문제를 풀다 보면, 어떤 정수의 각 자릿수를 구해야 하는 경우가 자주 생깁니다.

예를 들어, 5자리 정수 54321이 Input으로 들어온다고 가정해봅시다.

54321이라는 값이 들어오면 우리는 5, 4, 3, 2, 1 이라는 값을 구해야 되는데요.

다음과 같이 구할 수 있습니다.

5 = 54321 / 10000

4 = ( 54321 % 10000 ) / 1000

3 = ( 54321 % 1000 ) / 100

2 = ( 54321 % 100 ) / 10

1 = ( 54321 % 10 )

간단한 규칙이 보이시나요? %와 / 을 이용해 자릿수를 간단하게 다룰 수 있습니다.

다른 예시를 하나 더 다뤄볼까요?

9236715 라는 값이 들어오면 위의 알고리즘을 어떻게 변형하면 될까요?

9 = 9236715 / 1000000

2 = ( 9236715 % 1000000 ) / 100000

3 = ( 9236715 % 100000 ) / 10000

다음과 같이 구할 수 있습니다.

지금 예시들은 다 몇 자리 숫자인지 미리 알고 있는 경우인데요.

보통 알고리즘 문제는 Input의 범위가 다음과 같이 정해져 있습니다.

그렇다면 이런 상황에서는 어떻게 알고리즘을 구현할 수 있을까요?

다음과 같이 코드를 구현할 수 있습니다.

#include<iostream> using namespace std; int list[6]; int main(void) { // 1 ~ 100,000 사이의 숫자가 Input으로 들어온다. int ninput; cin >> ninput; // 2자리 ~ 6자리 숫자는 각 자릿수를 구해서 출력해준다. list[0] = ninput / 100000; // 십만의자릿수 list[1] = (ninput % 100000) / 10000; //만의자릿수 list[2] = (ninput % 10000) / 1000; //천의자릿수 list[3] = (ninput % 1000) / 100; //백의자릿수 list[4] = (ninput % 100) / 10; //십의자릿수 list[5] = (ninput % 10); //일의자릿수 for (int i = 0; i < 6; i++) { cout << list[i] << ' '; } }

최대 자릿수를 안다면 항상 다음과 같이 코드를 구현해 배열에 각 자릿수를 저장할 수 있습니다.

하지만 언뜻 보기에는 6자리 숫자가 들어오면 문제가 없지만, 1~5자리 숫자가 들어오면 문제가 있어 보입니다.

다음 예시를 통해서 1 ~ 5 자리 숫자가 들어오면 알고리즘이 어떻게 작동하는지 알아보겠습니다.

4321 이라는 4자리 숫자가 들어왔다고 가정해봅시다.

list[0] = 4321 / 100000 = 0

list[1] = (4321 % 100000) / 10000 = 0

list[2] = (4321 % 10000) / 1000 = 4

list[3] = (4321 % 1000) / 100 = 3

list[4] = (4321 % 100) / 10 = 2

list[5] = (4321 % 10) = 1

다음과 같이 배열에 저장이 됩니다.

즉 Ninput보다 큰 자릿수에는 0이 저장되는 것을 확인할 수 있습니다.

이 알고리즘을 잘 활용하면 다음과 같은 문제들을 쉽게 해결할 수 있습니다.
https://www.acmicpc.net/problem/14954

14954번: Happy Number

Your program is to read from standard input. The input consists of a single line that contains an integer, n (1 ≤ n ≤ 1,000,000,000)

www.acmicpc.net

오늘 포스팅은 여기서 마치겠습니다.

# data[].attributes.attachment_link.title
[알고리즘] 각 자릿수 구하기

# data[].attributes.attachment_link.description
안녕하세요. 여행벌입니다. 오늘은 알고리즘 문제를 풀 때 자주 쓰이는 각 자릿수 구하기 알고리즘에 대해서 포스팅해보도록 하겠습니다. 알고리즘 문제를 풀다 보면, 어떤 정수의 각 자릿수를 구해야 하는 경우가 자주 생깁니다. 예를 들어, 5자리 정수 54321이 Input으로 들어온다고 가정해봅시다. 54321이라는 값이 들어오면 우리는 5, 4, 3, 2, 1 이라는 값을 구해야 되는데요.