Skip to content

Commit 19fb071

Browse files
committed
24주차 알고리즘 완료
1 parent e36a85a commit 19fb071

3 files changed

Lines changed: 206 additions & 0 deletions

File tree

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
package programmers.level2.week_24;
2+
3+
/**
4+
* [3차] n진수 게임
5+
* https://programmers.co.kr/learn/courses/30/lessons/17687?language=java
6+
*/
7+
public class Solution001 {
8+
public static void main(String[] args) {
9+
System.out.println(solution(16, 16, 2, 1));
10+
}
11+
12+
static public String solution(int n, int t, int m, int p) {
13+
StringBuilder answer = new StringBuilder();
14+
StringBuilder numStr = new StringBuilder();
15+
int len = t * m;
16+
int num;
17+
String convertNum;
18+
numStr.append("0");
19+
for (int i = 1; i <= len; i++) {
20+
num = i;
21+
convertNum = "";
22+
if (numStr.length() > (len)) {
23+
break;
24+
}
25+
while (num > 0) {
26+
convertNum = getAlph(num % n) + convertNum;
27+
num /= n;
28+
}
29+
// todo 저장 안하고 바로 계산해서 답 추가하기 해도 되는데 귀찮음 > 이렇게 하면 더 빠름
30+
numStr.append(convertNum);
31+
}
32+
33+
for (int i = 0; i < t; i++) {
34+
answer.append(numStr.charAt((m * i) + p - 1));
35+
}
36+
37+
return answer.toString();
38+
}
39+
40+
static private String getAlph(int n) {
41+
String r = "";
42+
if (n == 10)
43+
r = "A";
44+
else if (n == 11)
45+
r = "B";
46+
else if (n == 12)
47+
r = "C";
48+
else if (n == 13)
49+
r = "D";
50+
else if (n == 14)
51+
r = "E";
52+
else if (n == 15)
53+
r = "F";
54+
else
55+
r = n + "";
56+
return r;
57+
}
58+
59+
}
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package programmers.level2.week_24;
2+
3+
import java.util.ArrayList;
4+
import java.util.Arrays;
5+
import java.util.List;
6+
7+
/**
8+
* [3차] 압축
9+
* https://programmers.co.kr/learn/courses/30/lessons/17684?language=java
10+
*/
11+
public class Solution002 {
12+
public static void main(String[] args) {
13+
String msg = "TOBEORNOTTOBEORTOBEORNOT";
14+
System.out.println(Arrays.toString(solution(msg)));
15+
}
16+
17+
static public int[] solution(String msg) {
18+
int[] answer = {};
19+
List<Integer> answerList = new ArrayList<>();
20+
List<String> alpList = new ArrayList<>();
21+
String alp = "0ABCDEFGHIJKLMNOPQRSTUVWXYZ";
22+
23+
for (int i = 0; i < alp.length(); i++) {
24+
alpList.add(alp.charAt(i) + "");
25+
}
26+
27+
String s = "";
28+
int idx = 0;
29+
for (int i = 0; i < msg.length(); i++) {
30+
s = msg.charAt(i) + "";
31+
if (alpList.indexOf(s) > -1 && i != msg.length() - 1) {
32+
idx = i;
33+
while (msg.length() > idx && alpList.indexOf(msg.substring(i, idx + 1)) > -1) {
34+
s = msg.substring(i, ++idx);
35+
}
36+
answerList.add(alpList.indexOf(s));
37+
if (idx < msg.length()) {
38+
alpList.add(msg.substring(i, idx + 1));
39+
}
40+
i = idx - 1;
41+
}
42+
}
43+
44+
if (idx < msg.length()) {
45+
answerList.add(alpList.indexOf(msg.charAt(msg.length() - 1) + ""));
46+
}
47+
48+
answer = new int[answerList.size()];
49+
for (int i = 0; i < answer.length; i++) {
50+
answer[i] = answerList.get(i);
51+
}
52+
53+
return answer;
54+
}
55+
}
Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
package programmers.level2.week_24;
2+
3+
import java.util.ArrayList;
4+
import java.util.Collections;
5+
import java.util.List;
6+
7+
/**
8+
* [3차] 방금그곡
9+
* https://programmers.co.kr/learn/courses/30/lessons/17683?language=java
10+
*/
11+
public class Solution003 {
12+
public static void main(String[] args) {
13+
Solution003 sol = new Solution003();
14+
String m = "ABC";
15+
String[] musicinfos = {"12:00,12:14,HELLO,C#DEFGAB", "13:00,13:05,WORLD,ABCDEF"};
16+
System.out.println(sol.solution(m, musicinfos));
17+
}
18+
19+
public String solution(String m, String[] musicinfos) {
20+
String answer = "";
21+
List<Music> answerList = new ArrayList<>();
22+
String[] info;
23+
int minute1 = 0;
24+
int minute2 = 0;
25+
26+
m = replaceStr(m);
27+
for (int i = 0; i < musicinfos.length; i++) {
28+
info = musicinfos[i].split(",");
29+
minute1 = (Integer.parseInt(info[0].substring(0, 2)) * 60) + (Integer.parseInt(info[0].substring(3, 5)));
30+
minute2 = (Integer.parseInt(info[1].substring(0, 2)) * 60) + (Integer.parseInt(info[1].substring(3, 5)));
31+
info[3] = replaceStr(info[3]);
32+
info[3] = info[3].repeat((minute2 - minute1) / info[3].length()) + info[3].substring(0, (minute2 - minute1) % info[3].length());
33+
34+
if (info[3].contains(m)) {
35+
answerList.add(new Music(info[2], minute2 - minute1));
36+
}
37+
}
38+
39+
if (answerList.size() == 0) {
40+
return "(None)";
41+
}
42+
43+
Collections.sort(answerList);
44+
45+
return answerList.get(0).getTitle();
46+
}
47+
48+
private String replaceStr(String s) {
49+
s = s.replaceAll("C#", "H");
50+
s = s.replaceAll("D#", "I");
51+
s = s.replaceAll("F#", "J");
52+
s = s.replaceAll("G#", "K");
53+
s = s.replaceAll("A#", "L");
54+
55+
return s;
56+
}
57+
58+
class Music implements Comparable<Music> {
59+
String title;
60+
int playTime;
61+
62+
public Music() {
63+
64+
}
65+
66+
public Music(String title, int playTime) {
67+
this.title = title;
68+
this.playTime = playTime;
69+
}
70+
71+
public int getPlayTime() {
72+
return playTime;
73+
}
74+
75+
public void setPlayTime(int playTime) {
76+
this.playTime = playTime;
77+
}
78+
79+
public String getTitle() {
80+
return title;
81+
}
82+
83+
public void setTitle(String title) {
84+
this.title = title;
85+
}
86+
87+
@Override
88+
public int compareTo(Music o) {
89+
return o.getPlayTime() - getPlayTime();
90+
}
91+
}
92+
}

0 commit comments

Comments
 (0)