Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 55 additions & 0 deletions Basic_Of_Algorithm/src/programmers_level_2/no_10.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
package programmers_level_2;

import java.util.HashMap;
import java.util.ArrayList;

public class no_10 {

public static void main(String[] args) {


String [] record = {"Enter uid1234 Muzi", "Enter uid4567 Prodo","Leave uid1234","Enter uid1234 Prodo","Change uid4567 Ryan"};

HashMap<String,String> map = new HashMap<>();
ArrayList<String> answerList = new ArrayList<>();

for(String str : record) {

String temp[] = str.split(" ");
String action = temp[0];
String id = temp[1];

if(action.equals("Leave")) continue;

String nick = temp[2];

map.put(id, nick);

}

for(String str : record) {

String temp[] = str.split(" ");
String action = temp[0];
String id = temp[1];

if(action.equals("Change")) continue;

String nick = map.get(id);
String ans = nick + "님이 " + (action.equals("Enter") ? "들어왔습니다." : "나갔습니다.");

answerList.add(ans);

}


String[]answer = new String[answerList.size()];

for(int i = 0 ; i< answerList.size();i++) answer[i] = answerList.get(i);

for(String str : answer)System.out.println(str);


}

}
91 changes: 91 additions & 0 deletions Basic_Of_Algorithm/src/programmers_level_2/no_11.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
package programmers_level_2;

import java.util.ArrayList;
import java.util.Collections;

public class no_11 {

public static void main(String[] args) {


String m = "CC#BCC#BCC#BCC#B";
String[]musicinfos = {"03:00,03:30,FOO,CC#B", "04:00,04:08,BAR,CC#BCC#BCC#B"};
String answer = "(None)";

String []mel = {"C#","D#","E#","F#","G#","A#","B#"};
String []melChange = {"c","d","e","f","g","a","b"};

ArrayList<String>answerList = new ArrayList<>();

for(int i=0;i<mel.length;i++) m = m.replaceAll(mel[i],melChange[i] );


for(String str : musicinfos) {

String[]temp = str.split(",");

int time = change(temp[0],temp[1]);

String title = temp[2];

String melody = temp[3];

String tempMel = "";

for(int i=0;i<mel.length;i++) melody = melody.replaceAll(mel[i], melChange[i]);

for(int i=0;i<time;i++) tempMel += melody.charAt(i%melody.length());

System.out.println(tempMel);

if(tempMel.contains(m)) answerList.add(title+":"+time);

}

if(answerList.isEmpty()){
System.out.println(answer);
}else {
Collections.sort(answerList,(o1,o2)->{

String []a = o1.split(":");
String []b = o2.split(":");

int aa = Integer.parseInt(a[1]);
int bb = Integer.parseInt(b[1]);

if(aa>bb) return bb-aa;

return 0;
});


String [] temp = answerList.get(0).split(":");
answer = temp[0];

System.out.println(answer);
}





}
static int change(String start,String end) {

String s[] = start.split(":");

int hour = Integer.parseInt(s[0]);
int StartMin = Integer.parseInt(s[1]) + hour*60;

s = end.split(":");

hour = Integer.parseInt(s[0]);
int endMin = Integer.parseInt(s[1]) + hour*60;

return endMin - StartMin;



}

}
73 changes: 73 additions & 0 deletions Basic_Of_Algorithm/src/programmers_level_2/no_12.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
package programmers_level_2;

public class no_12 {

public static void main(String[] args) {

int n = 6;
int[][]road = {{1,2,1},{1,3,2},{2,3,2},{3,4,3},{3,5,2},{3,5,3},{5,6,1}};
int k = 4;
int answer = 0;
int INF = 500001;
int [][] map = new int[n+1][n+1];

for(int i = 1 ; i <=n; i++) {
for(int j=1; j<=n ; j++) {
if(i==j) continue;
map[i][j] = INF; //무한대
}
}


for(int i=0;i<road.length;i++) {
int a = road[i][0];
int b = road[i][1];
int w = road[i][2];
//무한대 보다 작으면 간선의 정보 저장
if(map[a][b] > w) {
map[a][b] = w;
map[b][a] = w;
}

}

int [] dist = new int[n+1];
for(int i = 2; i <= n ; i++) {
dist[i] = INF;
}

boolean[] visited = new boolean[n+1];
visited[1] = true;


for(int i=1; i <=n-1 ; i++) {

int min_idx = 1;
int min_value = INF;
for(int j=2;j<=n;j++) {
if(!visited[j] && dist[j]<min_value) {
min_value = dist[j];
min_idx = j;
}
}

visited[min_idx] = true;


for(int j = 2; j <= n ; j++) {
if(dist[j]>dist[min_idx] + map[min_idx][j]) {
dist[j] = dist[min_idx] + map[min_idx][j];
}
}

}

for(int i=1;i<=n;i++) {

if(dist[i]<=k) answer++;
}
System.out.println(answer);
for(int i : dist)System.out.print(i+",");
}

}