ํด๋น ๋ฌธ์ ๋ ๋ฐฑ์ค 1110๋ฒ ๋ฌธ์ ์ด๊ณ , ๋ธ๋ก๊ทธ์๋ ์ฌ๋ ธ์๋๋ฐ ์ค๋ ๊ฐ์ฌ๋๊ป์ ์ด ๋ฌธ์ ๋ฅผ ๋ด์ฃผ์ ์!
์ค๋๋ง์ ๋ค์ ํ ๋ฒ ๋ ํ๊ฒ ๋์์ต๋๋ค.
๋ธ๋ก๊ทธ์ ์ฌ๋ฆด๊น ๋ง๊น ํ๋๋ฐ, ๋๋ฆ์ ๋ ์ํ์ฐฉ์ค๊ฐ ์์ด์ ๋ณต๊ธฐํ๊ณ ์ ์ฌ๋ ค๋ด ๋๋ค.
1. ๋ฌธ์
0๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , 99๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์ ์๊ฐ ์ฃผ์ด์ง ๋ ๋ค์๊ณผ ๊ฐ์ ์ฐ์ฐ์ ํ ์ ์๋ค. ๋จผ์ ์ฃผ์ด์ง ์๊ฐ 10๋ณด๋ค ์๋ค๋ฉด ์์ 0์ ๋ถ์ฌ ๋ ์๋ฆฌ ์๋ก ๋ง๋ค๊ณ , ๊ฐ ์๋ฆฌ์ ์ซ์๋ฅผ ๋ํ๋ค. ๊ทธ ๋ค์, ์ฃผ์ด์ง ์์ ๊ฐ์ฅ ์ค๋ฅธ์ชฝ ์๋ฆฌ ์์ ์์์ ๊ตฌํ ํฉ์ ๊ฐ์ฅ ์ค๋ฅธ์ชฝ ์๋ฆฌ ์๋ฅผ ์ด์ด ๋ถ์ด๋ฉด ์๋ก์ด ์๋ฅผ ๋ง๋ค ์ ์๋ค. ๋ค์ ์๋ฅผ ๋ณด์.
26๋ถํฐ ์์ํ๋ค. 2+6 = 8์ด๋ค. ์๋ก์ด ์๋ 68์ด๋ค. 6+8 = 14์ด๋ค. ์๋ก์ด ์๋ 84์ด๋ค. 8+4 = 12์ด๋ค. ์๋ก์ด ์๋ 42์ด๋ค. 4+2 = 6์ด๋ค. ์๋ก์ด ์๋ 26์ด๋ค.
์์ ์๋ 4๋ฒ๋ง์ ์๋ ์๋ก ๋์์ฌ ์ ์๋ค. ๋ฐ๋ผ์ 26์ ์ฌ์ดํด์ ๊ธธ์ด๋ 4์ด๋ค.
N์ด ์ฃผ์ด์ก์ ๋, N์ ์ฌ์ดํด์ ๊ธธ์ด๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
2. ์ ๋ ฅ
์ฒซ์งธ ์ค์ N์ด ์ฃผ์ด์ง๋ค. N์ 0๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , 99๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์ ์์ด๋ค.
3. ์ถ๋ ฅ
์ฒซ์งธ ์ค์ N์ ์ฌ์ดํด ๊ธธ์ด๋ฅผ ์ถ๋ ฅํ๋ค.
์ฒซ ๋ฒ์งธ ์ฝ๋
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int cnt = 0;
ArrayList<Character> numArr = new ArrayList<>();
Scanner sc = new Scanner(System.in);
String num = sc.next();
for (int i = 0; i < num.length(); i++) {
if (num.length() == 1) {
for (int j = 0; j < 2; j++) {
numArr.add(0, '0');
numArr.add(1, num.charAt(i));
break;
}
} else numArr.add(num.charAt(i));
}
while(true) {
int a = (int) (numArr.get(0) - '0');
int b = (int) (numArr.get(1) - '0');
int c = a + b;
int d;
if (c < 10) {
d = (b * 10) + c;
} else d = (b * 10) + (c % 10);
numArr.clear();
numArr.add((char) (d / 10 + (int) '0'));
numArr.add((char) (d % 10 + (int) '0'));
cnt++;
if(((int)numArr.get(0) - '0') * 10 + ((int)numArr.get(1) - '0') % 10 ==
((int)num.charAt(0) - '0') * 10 + ((int)num.charAt(1) - '0') % 10) break;
}
System.out.println(cnt);
}
}
๐ค ์ธ๊ฐ์ ์ ๋๊ฐ์ ์ค์๋ฅผ ํ๋๊ฑธ๊น.
์ ๋ฒ์๋ String์ผ๋ก ๋ฐ์์ ๋ฌธ์ ๋ฅผ ์ด๋ ต๊ฒ ๊ผฌ๋๋
์ด๋ฒ์ ๋ String์ผ๋ก ๋ฐ์์ ์ฝ๋๋ฅผ ๋๋ฝ๊ฒ ์งฐ๋ค. (์์ด๋ผ๋ ธ ์์ด๋ผ๋ ธ
๊ฐ๋งํ ์ง์ผ๋ณด๋ค๊ฐ ๊ตณ์ด ์ด๋ด ํ์๊ฐ ์์ด์ ๋ํญ ์์ ํ๋ค.
๋ ๋ฒ์งธ ์ฝ๋
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int cnt = 0;
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
int tmp = num;
int newNum;
while(true) {
newNum = ((num % 10) * 10) + ((num / 10 + num % 10) % 10);
cnt++;
num = newNum;
if(newNum == tmp) break;
}
System.out.println(cnt);
}
}
๐ค ์ฌ๊ธฐ์ ์ค์ํ๊ฑด tmp์ num ๊ฐ์ ๋ฃ์ด์ค์ผ while๋ฌธ ํ์ถํ ์ ์๋ค.
(num์ ๊ณ์ ๊ฐ์ด ๋ฐ๋๋ ์กฐ๊ฑด๋ฌธ์ num์ผ๋ก ๋ฃ์ผ๋ฉด ์์ํ ๋ชป ๋น ์ ธ ๋์ด!)
'๐ Algorithm > etc' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์๋ฐ(Java) - ๊ตฌ๊ฐํฉ ๊ตฌํ๊ธฐ (0) | 2023.02.16 |
---|---|
์๋ฐ(Java) - 10์ง์ 2์ง์ ๋ณ๊ฒฝํ๊ธฐ (0) | 2023.02.06 |
์๋ฐ(Java) - ์ซ์ ์ฐพ๊ธฐ (0) | 2023.01.19 |
์๋ฐ(Java) - ์ํธ ์ฒดํฌ (0) | 2023.01.18 |
์๋ฐ(Java) ํ์ ์ง์ ๋๋์ด ๋ด๊ธฐ (1) | 2023.01.12 |