Skip to content

Commit 9eedfc0

Browse files
committed
동전0, 뱀과사다리게임, 비밀번호찾기,FourSquares,패션왕신해빈,DSLR,토마토,구간합구하기
1 parent e2e56e0 commit 9eedfc0

7 files changed

+278
-11
lines changed

Java/BJ11047_동전0.java

+50
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
/**
2+
* 구현
3+
*
4+
* 1. 동전 큰 것부터 확인
5+
*
6+
* 2. k원보다 작거나 같으면 동전으로 나누어 몇개까지 사용가능한지 확인
7+
*
8+
* 3. 몫이 사용개수 이므로 몫만큼 정답 증가
9+
*
10+
* 4. 나머지를 기준으로 하위 동전 체크
11+
*
12+
* 5. k == 0으로 전환 시 정답 출력
13+
*
14+
*/
15+
16+
import java.util.*;
17+
import java.io.*;
18+
19+
public class BJ11047_동전0 {
20+
21+
public static void main(String[] args) throws IOException{
22+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
23+
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
24+
StringTokenizer st;
25+
26+
st = new StringTokenizer(br.readLine());
27+
28+
int n = Integer.parseInt(st.nextToken());
29+
int k = Integer.parseInt(st.nextToken());
30+
31+
int[] arr = new int[n];
32+
for(int i = 0; i < n; i++){
33+
arr[i] = Integer.parseInt(br.readLine());
34+
}
35+
36+
int cnt = 0;
37+
38+
for(int i = arr.length-1; i >= 0; i--){
39+
if(arr[i] <= k){
40+
cnt += k/arr[i];
41+
k %= arr[i];
42+
}
43+
if(k == 0){
44+
System.out.println(cnt);
45+
break;
46+
}
47+
}
48+
49+
}
50+
}
+90
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
/**
2+
* 구현
3+
*
4+
* 1. 사다리 정보와 뱀의 정보를 배열에 담기
5+
*
6+
* 2. 1~100칸의 정보를 만들고 각 칸에 몇번만에 왔는지를 저장하면서 이동(방문했던 칸은 방문하지 않음)
7+
*
8+
* 3. 최종 100번째칸에 왔을때 몇번만에 왔는지 출력
9+
*
10+
*/
11+
12+
import java.util.*;
13+
import java.io.*;
14+
15+
16+
public class BJ16928_뱀과사다리게임 {
17+
18+
public static int[] map = new int[101];
19+
public static int[] cmap = new int[101];
20+
public static void main(String[] args) throws IOException{
21+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
22+
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
23+
StringTokenizer st;
24+
25+
st = new StringTokenizer(br.readLine());
26+
27+
int ladder = Integer.parseInt(st.nextToken());
28+
int snake = Integer.parseInt(st.nextToken());
29+
30+
// 사다리 정보 저장
31+
for(int i = 0; i < ladder; i++){
32+
st = new StringTokenizer(br.readLine());
33+
34+
int start = Integer.parseInt(st.nextToken());
35+
int end = Integer.parseInt(st.nextToken());
36+
37+
map[start] = end;
38+
}
39+
40+
// 뱀 정보 저장
41+
for(int i = 0; i < snake; i++){
42+
st = new StringTokenizer(br.readLine());
43+
44+
int start = Integer.parseInt(st.nextToken());
45+
int end = Integer.parseInt(st.nextToken());
46+
47+
map[start] = end;
48+
}
49+
// 게임시작
50+
check();
51+
System.out.println(cmap[100]);
52+
}
53+
54+
//게임
55+
public static void check(){
56+
Queue<Integer> q = new LinkedList<>();
57+
58+
q.offer(1);
59+
cmap[1] = 0;
60+
while(!q.isEmpty()){
61+
62+
int cur = q.poll();
63+
64+
if(cur == 100){
65+
break;
66+
}
67+
// 주사위 굴리기
68+
for(int i = 1; i <= 6; i++){
69+
70+
if(cur+i > 100) continue;
71+
72+
// 이동할 곳이 사다리,뱀 없고 방문하지 않았던 곳
73+
if(cmap[cur+i] == 0 && map[cur+i] == 0){
74+
cmap[cur+i] = cmap[cur]+1;
75+
q.offer(cur+i);
76+
}
77+
// 사다리나 뱀이 있음
78+
else if(map[cur+i] != 0){
79+
// 사다리 뱀의 최종위치
80+
int move = map[cur+i];
81+
//최종위치 방문 안했던 곳이면 방문
82+
if(cmap[move] == 0){
83+
cmap[move] = cmap[cur]+1;
84+
q.offer(move);
85+
}
86+
}
87+
}
88+
}
89+
}
90+
}

Java/BJ17219_비밀번호찾기.java

+42
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
/**
2+
* 구현
3+
*
4+
* 1. 해시맵에 주소: 비밀번호 매칭하여 저장
5+
*
6+
* 2. 해시맵에서 찾아서 출력
7+
*
8+
*/
9+
10+
import java.util.*;
11+
import java.io.*;
12+
13+
public class BJ17219_비밀번호찾기 {
14+
public static void main(String[] args) throws IOException{
15+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
16+
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
17+
StringTokenizer st;
18+
19+
st = new StringTokenizer(br.readLine());
20+
21+
int n = Integer.parseInt(st.nextToken());
22+
int m = Integer.parseInt(st.nextToken());
23+
24+
Map<String,String> map = new HashMap<>();
25+
26+
for(int i = 0; i < n; i++){
27+
st = new StringTokenizer(br.readLine());
28+
String key = st.nextToken();
29+
String pwd = st.nextToken();
30+
31+
map.put(key,pwd);
32+
}
33+
34+
for(int i = 0; i < m; i++){
35+
String find = br.readLine();
36+
bw.write(map.get(find) +"\n");
37+
}
38+
39+
bw.flush();
40+
bw.close();
41+
}
42+
}

Java/BJ17626_FourSquares.java

+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
/**
2+
* 구현
3+
*
4+
* dp[1] = 1 1 = 1^2
5+
* dp[2] = 2 2 = 1^2 +1^2
6+
* dp[3] = 3 3 = 1^2 +1^2 +1^2
7+
* dp[4] = 1 4 = 2^2
8+
* dp[5] = dp[2^2] +dp[1] 5 = 2^2 + 1^2
9+
* dp[6] = dp[2^2] +dp[2] 6 = 2^2 +1^2 +1^2
10+
*
11+
* j*j가 i보다 작은 수라는 가정하에
12+
* dp[i] = dp[i - j*j] +dp[j*j];
13+
* 제곱수는 다 1임 dp[j*j] == 1
14+
*/
15+
16+
import java.util.*;
17+
import java.io.*;
18+
19+
public class BJ17626_FourSquares {
20+
public static void main(String[] args) throws IOException{
21+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
22+
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
23+
StringTokenizer st;
24+
25+
int n = Integer.parseInt(br.readLine());
26+
27+
int[] dp = new int[n+1];
28+
for(int i = 1; i <= n; i++){
29+
if(i == 1) dp[1] = 1;
30+
else{
31+
int minCnt = Integer.MAX_VALUE;
32+
for(int j = 1; j*j <= i; j++){
33+
minCnt = Math.min(dp[i-j*j],minCnt);
34+
}
35+
dp[i] = minCnt +1;
36+
}
37+
}
38+
39+
System.out.println(dp[n]);
40+
}
41+
}

Java/BJ9019_DSLR.java

+2-10
Original file line numberDiff line numberDiff line change
@@ -77,19 +77,11 @@ public static int s(int i){
7777
}
7878

7979
public static int l(int i){
80-
String si = String.valueOf(i);
81-
82-
si = si.substring(1) + si.substring(0, 1);
83-
84-
return Integer.valueOf(si);
80+
return (i%1000)*10 + i/1000;
8581
}
8682

8783
public static int r(int i){
88-
String si = String.valueOf(i);
89-
90-
si = si.substring(si.length()-1,si.length()) + si.substring(0,si.length()-1);
91-
92-
return Integer.valueOf(si);
84+
return (i%10)*1000 + i/10;
9385
}
9486

9587
public static class Group{

Java/BJ9375_패션왕신해빈.java

+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
/**
2+
* 구현 브루트포스 문제
3+
*
4+
* 해시에 의상종류별 개수 저장
5+
*
6+
* 각 의상 종류별 개수+1 을 곱한다음 다 안고른 상태를 빼면 답
7+
*
8+
* 예) headgear = 2, eyewear = 1
9+
* 3*2 = 6 -1 = 5
10+
*
11+
*/
12+
13+
import java.util.*;
14+
import java.io.*;
15+
16+
public class BJ9375_패션왕신해빈 {
17+
public static void main(String[] args) throws IOException{
18+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
19+
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
20+
StringTokenizer st;
21+
22+
int t = Integer.parseInt(br.readLine());
23+
24+
// 테스트
25+
for(int tc = 0; tc <t; tc++){
26+
27+
// 의상 수
28+
int n = Integer.parseInt(br.readLine());
29+
Map<String,Integer> map = new HashMap<>();
30+
31+
for(int i = 0; i < n; i++){
32+
st = new StringTokenizer(br.readLine());
33+
String name = st.nextToken();
34+
String type = st.nextToken();
35+
map.put(type,map.getOrDefault(type,0)+1);
36+
}
37+
int result = 1;
38+
//의상 종류별 수
39+
for(int v : map.values()){
40+
result *= (v+1);
41+
}
42+
43+
if(map.size() == 0){
44+
bw.write(0 +"\n");
45+
}else{
46+
bw.write(result-1 +"\n");
47+
}
48+
}
49+
bw.flush();
50+
bw.close();
51+
}
52+
}

readme.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
* 1클래스++ 완성
66
* 2 클래스++ 완성
7-
* 3 클래스 진행중
7+
* 3 클래스++ 완성
88

99

1010

0 commit comments

Comments
 (0)