[programmers] ์ซ์ ์ง๊ถ - Java
์ฃผ์ด์ง ๋ ์ ์ X์ Y์ ๊ณตํต ์ซ์๋ฅผ ์ด์ฉํด ๋ง๋ค ์ ์๋ ๊ฐ์ฅ ํฐ ์ ์๋ฅผ ์ฐพ๋ ๋ฌธ์ ์
๋๋ค. ๊ณตํต ์ซ์๊ฐ ์์ผ๋ฉด -1์ ๋ฐํํ๊ณ , ๊ณตํต ์ซ์๊ฐ 0๋ง์ผ๋ก ๊ตฌ์ฑ๋์ด ์๋ค๋ฉด 0์ ๋ฐํํฉ๋๋ค. ์์๋ก X=3403, Y=13203์ผ ๊ฒฝ์ฐ ๊ฒฐ๊ณผ๋ 330์ด๋ฉฐ, X=5525, Y=1255์ผ ๊ฒฝ์ฐ ๊ฒฐ๊ณผ๋ 552์
๋๋ค. ์ฃผ์ด์ง Java ์ฝ๋์์๋ ๊ฐ ์ซ์์ ๋ฐ์ ํ์๋ฅผ ์ธ๊ณ , ๊ณตํต ์ซ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ฒฐ๊ณผ๋ฅผ ์์ฑํฉ๋๋ค.
Nov 20, 2024
์ซ์ ์ง๊ถ
๋ฌธ์ ์ค๋ช
๋ ์ ์
X
, Y
์ ์์์ ์๋ฆฌ์์ ๊ณตํต์ผ๋ก ๋ํ๋๋ ์ ์ k(0 โค k โค 9)๋ค์ ์ด์ฉํ์ฌ ๋ง๋ค ์ ์๋ ๊ฐ์ฅ ํฐ ์ ์๋ฅผ ๋ ์์ ์ง๊ฟ์ด๋ผ ํฉ๋๋ค(๋จ, ๊ณตํต์ผ๋ก ๋ํ๋๋ ์ ์ ์ค ์๋ก ์ง์ง์ ์ ์๋ ์ซ์๋ง ์ฌ์ฉํฉ๋๋ค). X
, Y
์ ์ง๊ฟ์ด ์กด์ฌํ์ง ์์ผ๋ฉด, ์ง๊ฟ์ -1์
๋๋ค. X
, Y
์ ์ง๊ฟ์ด 0์ผ๋ก๋ง ๊ตฌ์ฑ๋์ด ์๋ค๋ฉด, ์ง๊ฟ์ 0์
๋๋ค.์๋ฅผ ๋ค์ด,
X
= 3403์ด๊ณ Y
= 13203์ด๋ผ๋ฉด, X
์ Y
์ ์ง๊ฟ์ X
์ Y
์์ ๊ณตํต์ผ๋ก ๋ํ๋๋ 3, 0, 3์ผ๋ก ๋ง๋ค ์ ์๋ ๊ฐ์ฅ ํฐ ์ ์์ธ 330์
๋๋ค. ๋ค๋ฅธ ์์๋ก X
= 5525์ด๊ณ Y
= 1255์ด๋ฉด X
์ Y
์ ์ง๊ฟ์ X
์ Y
์์ ๊ณตํต์ผ๋ก ๋ํ๋๋ 2, 5, 5๋ก ๋ง๋ค ์ ์๋ ๊ฐ์ฅ ํฐ ์ ์์ธ 552์
๋๋ค(X
์๋ 5๊ฐ 3๊ฐ, Y
์๋ 5๊ฐ 2๊ฐ ๋ํ๋๋ฏ๋ก ๋จ๋ 5 ํ ๊ฐ๋ ์ง ์ง์ ์ ์์ต๋๋ค.)๋ ์ ์
X
, Y
๊ฐ ์ฃผ์ด์ก์ ๋, X
, Y
์ ์ง๊ฟ์ returnํ๋ solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.์ ํ์ฌํญ
- 3 โค
X
,Y
์ ๊ธธ์ด(์๋ฆฟ์) โค 3,000,000์ ๋๋ค.
X
,Y
๋ 0์ผ๋ก ์์ํ์ง ์์ต๋๋ค.
X
,Y
์ ์ง๊ฟ์ ์๋นํ ํฐ ์ ์์ผ ์ ์์ผ๋ฏ๋ก, ๋ฌธ์์ด๋ก ๋ฐํํฉ๋๋ค.
์ ์ถ๋ ฅ ์
X | Y | result |
"100" | "2345" | "-1" |
"100" | "203045" | "0" |
"100" | "123450" | "10" |
"12321" | "42531" | "321" |
"5525" | "1255" | "552" |
์ ์ถ๋ ฅ ์ ์ค๋ช
์
์ถ๋ ฅ ์ #1
X
,Y
์ ์ง๊ฟ์ ์กด์ฌํ์ง ์์ต๋๋ค. ๋ฐ๋ผ์ "-1"์ returnํฉ๋๋ค.
์
์ถ๋ ฅ ์ #2
X
,Y
์ ๊ณตํต๋ ์ซ์๋ 0์ผ๋ก๋ง ๊ตฌ์ฑ๋์ด ์๊ธฐ ๋๋ฌธ์, ๋ ์์ ์ง๊ฟ์ ์ ์ 0์ ๋๋ค. ๋ฐ๋ผ์ "0"์ returnํฉ๋๋ค.
์
์ถ๋ ฅ ์ #3
X
,Y
์ ์ง๊ฟ์ 10์ด๋ฏ๋ก, "10"์ returnํฉ๋๋ค.
์
์ถ๋ ฅ ์ #4
X
,Y
์ ์ง๊ฟ์ 321์ ๋๋ค. ๋ฐ๋ผ์ "321"์ returnํฉ๋๋ค.
์
์ถ๋ ฅ ์ #5
- ์ง๋ฌธ์ ์ค๋ช ๋ ์์์ ๊ฐ์ต๋๋ค.
solution.java
import java.util.*; class Solution { public String solution(String X, String Y) { // X ๋ฐ Y์ 0~9์๋ฆฌ ์ซ์์ ๋ฐ์ ํ์ ๋ฐฐ์ด int[] countX = new int[10]; int[] countY = new int[10]; // X์ ๊ฐ ์๋ฆฟ์ ๋ฐ์ ํ์ for (char c : X.toCharArray()) { countX[c - '0']++; } // Y์ ๊ฐ ์๋ฆฟ์ ๋ฐ์ ํ์ for (char c : Y.toCharArray()) { countY[c - '0']++; } // StringBuilder๋ฅผ ์ฌ์ฉํ์ฌ ๊ฒฐ๊ณผ ์์ฑ StringBuilder result = new StringBuilder(); for (int i = 9; i >= 0; i--) { // ๊ฐ์ฅ ํฐ ์ซ์๋ถํฐ ์์ int commonCount = Math.min(countX[i], countY[i]); for (int j = 0; j < commonCount; j++) { result.append(i); } } // ์์ธ์ฒ๋ฆฌ if (result.length() == 0) { return "-1"; // ๊ณตํต ์ซ์ ์์ } else if (result.charAt(0) == '0') { return "0"; // 0์ผ๋ก๋ง ๊ตฌ์ฑ๋ ๊ฒฐ๊ณผ } else { return result.toString(); // ๊ฐ์ฅ ํฐ ์ซ์ ๋ฐํ } } }
ํต์ฌ ํค์๋
toCharArray()
๋ฅผ ์ด์ฉํด ๋ฌธ์์ด์ ๋ฌธ์๋ก ๋ง๋ ํ,0
์ ๋นผ์ ํด๋น ์ซ์ ๋น๋ ๋ฐฐ์ด์ ์์ ์ธ๋ฑ์ค๋ฅผ 0์ผ๋ก ๋ง๋ค ์ ์๋ค.
Math.min()
์ ํตํด์ ๋ ๋ฐฐ์ด๊ฐ์์ ๋ฐ์ํ๋ ๋ฌธ์์ ์ต์๊ฐ์ด ๋ ๋ฌธ์๊ฐ ๊ณตํต์ผ๋ก ๋ฐ์ํ ํ์์์ ๊ตฌํ ์ ์๋ค.
๊ฒฐ๋ก !
ํด๋น ๋ฌธ์ ๋ฅผ ํตํด ๋ฌธ์์ ๋ฌธ์์ด์ ์กฐ์ํ๋ ๋ฒ์ ์ตํ ์ ์์๋ค.
Share article