https://www.acmicpc.net/problem/10610
์ฝ๋
import java.util.Scanner;
public class Main {
public static String str;
public static int[] numCountArr;
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
str = scan.next(); // ์
๋ ฅ๋ฐ์ N
numCountArr = new int[10]; // ์
๋ ฅ๋ฐ์ ๋ฌธ์์ด์ ๊ฐ ์๋ฆฟ์๋ฅผ ์ ์ฅ
long total = 0;
for(int i=0; i<str.length(); i++) {
// ๋ฌธ์์ด์ ๊ฐ ์๋ฆฟ์ ์ ์ฅ
int strNum = Integer.parseInt(str.substring(i, i+1));
numCountArr[strNum] ++;
total += strNum;
}
// ์
๋ ฅ๋ฐ์ ๋ฌธ์์ 0์ด ์๊ฑฐ๋, ๊ฐ ์๋ฆฟ์์ ํฉ์ด 3์๋ฐฐ์๊ฐ ์๋๋ฉด 30์๋ฐฐ์๊ฐ ์๋.
if(!str.contains("0") || total%3 != 0) {
System.out.println("-1");
return;
}
StringBuilder sb = new StringBuilder();
for(int i=9; i>=0; i--) { // ํฐ์๋ถํฐ ์ ์ฅ
while(numCountArr[i] > 0) {
sb.append(i);
numCountArr[i] --;
}
}
System.out.println(sb.toString());
scan.close();
}
}
ํ์ด
์ด๋ ต๋ค... ๋ค๋ฅธ ๊ธ๋ค์ ์ฐธ๊ณ ํด์ ํ์๋ค.
30์ ๋ฐฐ์๊ฐ ๋๋ ์กฐ๊ฑด์ ์ฐพ์์ผํ๋ค !!
30์ ๋ฐฐ์๋ 30, 60, 90, 120, 150, 180, 210, 240, 3000, 3030, 3060, ...
- ๋์ ๋ฌด์กฐ๊ฑด 0์ผ๋ก ๋๋์ผํ๋ค.
- ๋ํ ๊ฐ ์๋ฆฟ์์ ํฉ์ด 3์ ๋ฐฐ์์ด๋ค.
๋ํ ์ฃผ์ํ ์ ์ N์ด 10^5๊ฐ์ ์ซ์๋ก ๋์ด์๋ค -> 100000 ๊น์ง๊ฐ ์๋ 100000 ์๋ฆฟ์์ด๋ค.
๋ฐ๋ผ์ int๋ long๋ก ํด๊ฒฐํ ์ ์๊ณ ๋ฌธ์์ด๋ก ์ ๋ ฅ๋ฐ์์ผ ํ๋ค.
๋จผ์ for๋ฌธ์ ํตํด ์ฃผ์ด์ง ๋ฌธ์์ด์ ๊ฐ ์๋ฆฟ์๋ฅผ ์ธ๋ฑ์ค๋ก ๊ฐ์ง๋ ๋ฐฐ์ด์ ์ ์ฅํ๊ณ ,(numCountArr[])
๊ฐ ์๋ฆฟ์์ ํฉ์ ๋ํด์ค๋ค.(total)
for(int i=0; i<str.length(); i++) {
// ๋ฌธ์์ด์ ๊ฐ ์๋ฆฟ์ ์ ์ฅ
int strNum = Integer.parseInt(str.substring(i, i+1));
numCountArr[strNum] ++;
total += strNum;
}
์ for๋ฌธ์ด ๋๋๋ฉด ์ ๋ ฅ๋ฐ์ ๋ฌธ์์ 0์ด ์๊ฑฐ๋, 3์ ๋ฐฐ์๊ฐ ์๋์ง ํ๋จํ๋ค.
-> 0์ด ์๊ฑฐ๋ 3์ ๋ฐฐ์๊ฐ ์๋๋ฉด 30์ ๋ฐฐ์๊ฐ ์๋๋ฏ๋ก -1์ ์ถ๋ ฅํ๊ณ ์ข ๋ฃํ๋ค.
// ์
๋ ฅ๋ฐ์ ๋ฌธ์์ 0์ด ์๊ฑฐ๋, ๊ฐ ์๋ฆฟ์์ ํฉ์ด 3์๋ฐฐ์๊ฐ ์๋๋ฉด 30์๋ฐฐ์๊ฐ ์๋.
if(!str.contains("0") || total%3 != 0) {
System.out.println("-1");
return;
}
๋ง์ฝ ์ ์กฐ๊ฑด์ํตํด 0์ด ์๊ณ 3์๋ฐฐ์์ผ๊ฒฝ์ฐ => ์ฃผ์ด์ง ๋ฌธ์์ด์ 30์ ๋ฐฐ์์ด๋ค.
๋ฐ๋ผ์ ๊ฐ์ฅ ํฐ ์๋ฅผ ์ถ๋ ฅํด์ค๋ค.
StringBuilder sb = new StringBuilder();
for(int i=9; i>=0; i--) { // ํฐ์๋ถํฐ ์ ์ฅ
while(numCountArr[i] > 0) {
sb.append(i);
numCountArr[i] --;
}
}
System.out.println(sb.toString());
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 1541๋ฒ: ์์ด๋ฒ๋ฆฐ ๊ดํธ(๊ทธ๋ฆฌ๋) (0) | 2020.01.26 |
---|---|
[๋ฐฑ์ค] 1120๋ฒ: ๋ฌธ์์ด(๊ทธ๋ฆฌ๋) (0) | 2020.01.23 |
[๋ฐฑ์ค] 9506๋ฒ: ์ฝ์๋ค์ ํฉ (0) | 2020.01.23 |
[๋ฐฑ์ค] 11656๋ฒ: ์ ๋ฏธ์ฌ ๋ฐฐ์ด (0) | 2020.01.22 |
[๋ฐฑ์ค] 2606๋ฒ: ๋ฐ์ด๋ฌ์ค(DFS, BFS) (0) | 2020.01.22 |
๋๊ธ