[programmers] ์ˆซ์ž ์ง๊ถ - Java

์ฃผ์–ด์ง„ ๋‘ ์ •์ˆ˜ X์™€ Y์˜ ๊ณตํ†ต ์ˆซ์ž๋ฅผ ์ด์šฉํ•ด ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ์ •์ˆ˜๋ฅผ ์ฐพ๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๊ณตํ†ต ์ˆซ์ž๊ฐ€ ์—†์œผ๋ฉด -1์„ ๋ฐ˜ํ™˜ํ•˜๊ณ , ๊ณตํ†ต ์ˆซ์ž๊ฐ€ 0๋งŒ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค๋ฉด 0์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์‹œ๋กœ X=3403, Y=13203์ผ ๊ฒฝ์šฐ ๊ฒฐ๊ณผ๋Š” 330์ด๋ฉฐ, X=5525, Y=1255์ผ ๊ฒฝ์šฐ ๊ฒฐ๊ณผ๋Š” 552์ž…๋‹ˆ๋‹ค. ์ฃผ์–ด์ง„ Java ์ฝ”๋“œ์—์„œ๋Š” ๊ฐ ์ˆซ์ž์˜ ๋ฐœ์ƒ ํšŸ์ˆ˜๋ฅผ ์„ธ๊ณ , ๊ณตํ†ต ์ˆซ์ž๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฒฐ๊ณผ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
DriedPollack's avatar
Nov 20, 2024
[programmers] ์ˆซ์ž ์ง๊ถ - Java

์ˆซ์ž ์ง๊ถ

๋ฌธ์ œ ์„ค๋ช…

๋‘ ์ •์ˆ˜ XY์˜ ์ž„์˜์˜ ์ž๋ฆฌ์—์„œ ๊ณตํ†ต์œผ๋กœ ๋‚˜ํƒ€๋‚˜๋Š” ์ •์ˆ˜ k(0 โ‰ค k โ‰ค 9)๋“ค์„ ์ด์šฉํ•˜์—ฌ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ์ •์ˆ˜๋ฅผ ๋‘ ์ˆ˜์˜ ์ง๊ฟ์ด๋ผ ํ•ฉ๋‹ˆ๋‹ค(๋‹จ, ๊ณตํ†ต์œผ๋กœ ๋‚˜ํƒ€๋‚˜๋Š” ์ •์ˆ˜ ์ค‘ ์„œ๋กœ ์ง์ง€์„ ์ˆ˜ ์žˆ๋Š” ์ˆซ์ž๋งŒ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค). XY์˜ ์ง๊ฟ์ด ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด, ์ง๊ฟ์€ -1์ž…๋‹ˆ๋‹ค. XY์˜ ์ง๊ฟ์ด 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 ํ•œ ๊ฐœ๋Š” ์ง ์ง€์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.)
๋‘ ์ •์ˆ˜ XY๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, XY์˜ ์ง๊ฟ์„ returnํ•˜๋Š” solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

์ œํ•œ์‚ฌํ•ญ

  • 3 โ‰ค XY์˜ ๊ธธ์ด(์ž๋ฆฟ์ˆ˜) โ‰ค 3,000,000์ž…๋‹ˆ๋‹ค.
  • XY๋Š” 0์œผ๋กœ ์‹œ์ž‘ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • XY์˜ ์ง๊ฟ์€ ์ƒ๋‹นํžˆ ํฐ ์ •์ˆ˜์ผ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ๋ฌธ์ž์—ด๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

X
Y
result
"100"
"2345"
"-1"
"100"
"203045"
"0"
"100"
"123450"
"10"
"12321"
"42531"
"321"
"5525"
"1255"
"552"

์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

์ž…์ถœ๋ ฅ ์˜ˆ #1
  • XY์˜ ์ง๊ฟ์€ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ "-1"์„ returnํ•ฉ๋‹ˆ๋‹ค.
์ž…์ถœ๋ ฅ ์˜ˆ #2
  • XY์˜ ๊ณตํ†ต๋œ ์ˆซ์ž๋Š” 0์œผ๋กœ๋งŒ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๋‘ ์ˆ˜์˜ ์ง๊ฟ์€ ์ •์ˆ˜ 0์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ "0"์„ returnํ•ฉ๋‹ˆ๋‹ค.
์ž…์ถœ๋ ฅ ์˜ˆ #3
  • XY์˜ ์ง๊ฟ์€ 10์ด๋ฏ€๋กœ, "10"์„ returnํ•ฉ๋‹ˆ๋‹ค.
์ž…์ถœ๋ ฅ ์˜ˆ #4
  • XY์˜ ์ง๊ฟ์€ 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

More articles

See more posts

๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ปDriedPollack's Blog