๐ ๋ฌธ์ ๋งํฌ
๐ ๋ฌธ์ ํ์ด
๋ถ๋ถ ๋ฌธ์์ด ๋น๊ต๋ฅผ ๋ฌป๋ ๋ฌธ์ ์ด๋ค.
์ฌ์ ์๊ฐ์ด ์์ ๊ธธ์ด๋ณด๋ค ๊ธด ๊ฒฝ์ฐ๋ ์์ ์ด ๋๊น ์์ด ์ฒ์๋ถํฐ ๋ฐ๋ณตํด์ ์ฌ์๋๊ณ ,
์ฌ์ ์๊ฐ์ด ์์ ๊ธธ์ด๋ณด๋ค ์งง์ ๊ฒฝ์ฐ๋ ์์ ์ด ์ฒ์๋ถํฐ ์ฌ์ ์๊ฐ๋งํผ๋ง ์ฌ์๋๋ค.
๋ฐ๋ผ์ ์ฌ์ ์๊ฐ๊ณผ ์์ ๊ธธ์ด๋ฅผ ๊ตฌํด ์๋ ๋ ๊ฐ์ง ์กฐ๊ฑด์ผ๋ก ๋๋์ด ์ค์ ์ฌ์๋๋ ์ ๋ณด๋ฅผ ๋ง๋ค๋ฉด ๋๋ค.
1) ์ฌ์ ์๊ฐ > ์์ ๊ธธ์ด
์ค์ ์ฌ์๋๋ ์ ๋ณด๋ "์ฌ์ ์๊ฐ / ์์ ๊ธธ์ด" ๋งํผ ์ ๋ณด๋ฅผ ๋ฐ๋ณตํ ํ, ๋๋จธ์ง "์ฌ์ ์๊ฐ % ์์ ๊ธธ์ด " ๋งํผ ๋ค์ ๋ง๋ถ์ฌ์ฃผ๋ฉด ๋๋ค.
2) ์ฌ์ ์๊ฐ <= ์์ ๊ธธ์ด
์ค์ ์ฌ์๋๋ ์ ๋ณด๋ ์ฌ์ ์๊ฐ๋งํผ๋ง ์ ๋ณด๋ฅผ ์๋ผ์ฃผ๋ฉด ๋๋ค.
์ฌ๊ธฐ๊น์ง ํ๋ค๊ฐ #์ด ๋ถ์ ์์ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ ์ง ๊ณ ๋ฏผํ๋ ๋ถ๋ถ์์ ๋งํ๋ค.
C#์ ๋ ๊ธ์์ด์ง๋ง ์ฌ์ค ํ๋์ ์์ด๊ธฐ ๋๋ฌธ์ด๋ค.
Kakao Tech ๋ธ๋ก๊ทธ ๋ฌธ์ ํด์ค์์๋ ๋ฌธ์์ด ๋น๊ต์์ ์ด๋ฐ ๋ฌธ์ ๋ฅผ ์ฒ๋ฆฌํ ๋ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ ์ด์ฉํ๋ผ๊ณ ์๋ ค์ค๋ค.
1) ํ ํฐํ(Tokenizing)๋ฅผ ํตํด ["A", "B" "C#"] ์์ ๋ฐฐ์ด๋ก ๋ณํํ ํ ๋น๊ตํ๋ค.
2) ๋ ๊ธ์๋ก ๋ "C#", "D#", "F#" ๋ฑ์ ์
๋ณด์์ ์ฌ์ฉ๋์ง ์๋ ๋ฌธ์ "c", "d", "e" ๋ฑ์ผ๋ก ์นํ(Substitution)ํ ํ ๋ฌธ์์ด ๋น๊ต ํจ์๋ฅผ ์ด์ฉํ๋ค.
๊ฐ์ธ์ ์ผ๋ก๋ ์นํํ๋ ๊ฒ์ด ๋ ํธํ ๊ฒ ๊ฐ์์ #์ด ๋ถ์ ์์ ์นํํ๋ ํจ์๋ฅผ ๋ง๋ค์๋ค.
๊ทธ๋ฆฌ๊ณ ๋ง์ง๋ง์ผ๋ก ์ค์ ์ฌ์๋๋ ์ ๋ณด ์ค ๋ค์ค๊ฐ ๊ธฐ์ตํ๋ ๋ฉ๋ก๋์ธ ๋ฌธ์์ด m์ ํฌํจํ๋ ์ ๋ณด์ ์์ ์ ๋ชฉ์ ์ฐพ์ผ๋ฉด ๋๋ค.
์ฌ๊ธฐ์ ๋์น๋ฉด ์๋๋ ์ ์ด ์๋ค. ๋ง์ฝ ์กฐ๊ฑด์ด ์ผ์นํ๋ ์์ ์ด ์ฌ๋ฌ ๊ฐ์ธ ๊ฒฝ์ฐ๋ ์ ์ผ ์ฌ์ ์๊ฐ์ด ๊ธด ์์ ์ ์ฐพ์์ผ ํ๊ธฐ ๋๋ฌธ์ ๋ณ์ maxPlayingTime์ ํ๋ ๋ง๋ค์ด์ ์กฐ๊ฑด์ด ์ผ์นํ๋ ์์ ์ค ์ ์ผ ๊ธด ์ฌ์ ์๊ฐ์ ์ ๋ฐ์ดํธํด์ฃผ์ด์ผ ํ๋ค.
์ด๋ ๊ฒ ํ๊ณ ์ฑ์ ํ๋ ํ ์คํธ ์ผ์ด์ค ๋ช ๊ฐ๊ฐ ์คํจ๋ผ๊ณ ๋ ์ ํค๋งธ๋๋ฐ, ์กฐ๊ฑด์ด ์ผ์นํ๋ ์์ ์ด ์๋ ๊ฒฝ์ฐ๋ฅผ ๊ณ ๋ คํ์ง ๋ชปํ ๊ฒ์ด ์์ธ์ด์๋ค.
์กฐ๊ฑด์ด ์ผ์นํ๋ ์์ ์ด ์๋ ๊ฒฝ์ฐ์๋ "(None)"์ ๋ฆฌํดํ๋ค๋ ์ ์ ํฌํจํ๋ฉด ํ ์คํธ ์ผ์ด์ค๊ฐ ์ ๋ถ ํต๊ณผ๋๋ค.
Key Point
๐ ์ฌ์ ์๊ฐ > ์์ ๊ธธ์ด์ธ ๊ฒฝ์ฐ, ์ฌ์ ์๊ฐ <= ์์ ๊ธธ์ด์ธ ๊ฒฝ์ฐ๋ฅผ ๋๋์ด ์ฒ๋ฆฌํ๋ค.
๐ #์ด ๋ถ์ ์์ ์นํํ๋ ํจ์๋ฅผ ๋ง๋ ๋ค.
๐ ์กฐ๊ฑด์ด ์ผ์นํ๋ ์์ ์ด ์ฌ๋ฌ ๊ฐ์ธ ๊ฒฝ์ฐ์ ์๋ ๊ฒฝ์ฐ๋ฅผ ๊ณ ๋ คํ๋ค.
Java ์ฝ๋
import java.util.*;
class Solution {
public String solution(String m, String[] musicinfos) {
int maxPlayingTime = 0;
String answer = "";
// ๋ค์ค๊ฐ ๊ธฐ์ตํ ๋ฉ๋ก๋๋ฅผ ์นํํ๋ค.
m = changeCode(m);
for (String musicInfo : musicinfos) {
String[] info = musicInfo.split(",");
// ์ฌ์๋ ์๊ฐ ๊ตฌํ๊ธฐ
int playingTime = (Integer.parseInt(info[1].substring(0, 2))
- Integer.parseInt(info[0].substring(0, 2)))*60
+ Integer.parseInt(info[1].substring(3))
- Integer.parseInt(info[0].substring(3));
// ์
๋ณด ์ ๋ณด(=info[3]) #์ด ๋ถ์ ์ ์นํํ๊ธฐ
info[3] = changeCode(info[3]);
// ์์
๊ธธ์ด ๊ตฌํ๊ธฐ
int musicLength = info[3].length();
// ์ค์ ์ฌ์๋ ์์
์
๋ณด ๊ตฌํ๊ธฐ
String musicCode = "";
// ์ฌ์ ์๊ฐ > ์์
๊ธธ์ด : ์ฒ์๋ถํฐ ์์
๋ฐ๋ณต ์ฌ์
if (playingTime > musicLength) {
for (int j=0; j<playingTime/musicLength; j++) {musicCode += info[3];}
musicCode += info[3].substring(0, playingTime%musicLength);
}
// ์ฌ์ ์๊ฐ <= ์์
๊ธธ์ด : ์ฒ์๋ถํฐ ์ฌ์๋ ์๊ฐ๋งํผ ์ฌ์
else {musicCode += info[3].substring(0, playingTime);}
// answer = ๋ค์ค๊ฐ ๊ธฐ์ตํ๋ ๋ฉ๋ก๋๋ฅผ ํฌํจํ๋ฉด์
// ์ ์ผ ์ฌ์ ์๊ฐ์ด ๊ธด ์์
์ ๋ชฉ(=info[2])
if (musicCode.contains(m) && playingTime > maxPlayingTime) {
answer = info[2];
maxPlayingTime = playingTime;
}
}
// ์กฐ๊ฑด์ด ์ผ์นํ๋ ์์
์ด ์๋ ๊ฒฝ์ฐ answer = (None)
if (maxPlayingTime == 0) { answer = "(None)"; }
return answer;
}
// #์ด ๋ถ์ ์์ ์นํํ๋ ํจ์
public static String changeCode(String code) {
code = code.replaceAll("C#", "c");
code = code.replaceAll("D#", "d");
code = code.replaceAll("F#", "f");
code = code.replaceAll("G#", "g");
code = code.replaceAll("A#", "a");
return code;
}
}
'Algorithms > programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Programmers, [3์ฐจ] N์ง์ ๊ฒ์ : Java (3) | 2022.12.12 |
---|---|
Programmers, ์คํจ์จ : Java (1) | 2022.12.10 |
Programmers, ์คํ์ฑํ ๋ฐฉ : Java (0) | 2022.12.07 |
Programmers, [1์ฐจ] ๋คํธ ๊ฒ์ : Java (0) | 2022.12.06 |
Programmers, [1์ฐจ] ๋ด์ค ํด๋ฌ์คํฐ๋ง : Java (0) | 2022.12.06 |