Post

baekjoon 6단계 심화1

기록용 baekjoon 단계별 풀이입니다. 언어 : Java

25083번


1
2
3
4
5
6
7
8
9
10
11
import java.io.*;  
public class Main {  
    public static void main(String[] args) throws IOException {  
        System.out.println("         ,r'\"7");  
        System.out.println("r`-_   ,'  ,/");  
        System.out.println(" \\. \". L_r'");  
        System.out.println("   `~\\/");  
        System.out.println("      |");  
        System.out.println("      |");  
    }  
}

3003번


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import java.io.BufferedReader;  
import java.io.InputStreamReader;  
import java.io.IOException;  
import java.util.StringTokenizer;  
public class Main {  
    public static void main(String[] args) throws IOException {  
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));  
  //키보드 입력 바이트스트림을 char 타입으로 처리 후, string 타입으로 변환하여 저장
        StringTokenizer st = new StringTokenizer(bf.readLine()," ");  
	  //readLine()으로 한 줄을 입력 받고 공백으로 토큰 구분
        int king = 1;  //king을 주어진 수(1)로 초기화
        int queen = 1;  
        int rook = 2;  
        int bishop = 2;  
        int knight = 2;  
        int pawn = 8;  
  
        king = king-Integer.parseInt(st.nextToken());  //1-입력한 king값을 다시 king 값에 저장
        queen = queen - Integer.parseInt(st.nextToken());  
        rook = rook - Integer.parseInt(st.nextToken());  
        bishop = bishop - Integer.parseInt(st.nextToken());  
        knight =knight - Integer.parseInt(st.nextToken());  
        pawn = pawn - Integer.parseInt(st.nextToken());  
  
        System.out.println(king+" "+queen+" "+rook+" "+bishop+" "+knight+" "+pawn);  
    }  
}

2444번


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import java.io.BufferedReader;  
import java.io.InputStreamReader;  
import java.io.IOException;  
import java.util.StringTokenizer;  
public class Main {  
    public static void main(String[] args) throws IOException {  
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));  
  
        int n = Integer.parseInt(bf.readLine());  
  
        for(int i=1;i<=n;i++)  
        {  
            for(int j=1;j<=n-i;j++)  
            {  
                System.out.print(" ");  
            }  
            for(int k=1;k<=i;k++)  
            {  
                System.out.print("*");  
            }  
            for(int l=1;l<i;l++)  
            {  
                System.out.print("*");  
            }  
            System.out.println();  
        }  
        for(int i=1;i<=n;i++)  
        {  
            for(int j=1;j<=i;j++)  
            {  
                System.out.print(" ");  
            }  
            for(int k=1;k<=n-i;k++)  
            {  
                System.out.print("*");  
            }  
            for(int l=1;l<n-i;l++)  
            {  
                System.out.print("*");  
            }  
            System.out.println();  
        }  
    }  
}
  • 📌상기의 코드는 중복이 많아서 다음과 같이 수정
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import java.io.BufferedReader;  
import java.io.InputStreamReader;  
import java.io.IOException;  
import java.util.StringTokenizer;  
public class Main {  
    public static void main(String[] args) throws IOException {  
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));  
  
        int n = Integer.parseInt(bf.readLine());  
  
        for(int i=1;i<=n;i++)  
        {  
            for(int j=1;j<=n-i;j++)  
            {  
                System.out.print(" ");  
            }  
            for(int k=1;k<=i*2-1;k++)  
            {  
                System.out.print("*");  
            }  
  
            System.out.println();  
        }  
        for(int i=1;i<=n;i++)  
        {  
            for(int j=1;j<=i;j++)  
            {  
                System.out.print(" ");  
            }  
            for(int k=1;k<=(n-i)*2-1;k++)  
            {  
                System.out.print("*");  
            }  
  
            System.out.println();  
        }  
    }  
}

10988번


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import java.io.BufferedReader;  
import java.io.InputStreamReader;  
import java.io.IOException;  
import java.util.StringTokenizer;  
public class Main {  
    public static void main(String[] args) throws IOException {  
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));  
        //키보드 입력 버퍼스트림을 char 타입으로 처리 후, string 타입으로 변환하여 저장
  
        String s = bf.readLine();  //문자열을 한 줄 입력
        StringBuilder sb = new StringBuilder(s); //revers 함수를 사용하기 위해 StringBuilder 사용
        if(s.equals(sb.reverse().toString()))  //문자열과 역순이 동일하면
        {  
            System.out.println(1);  
        }  
        else  
  System.out.println(0);  
    }  
}

1157번 - 다시


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import java.io.BufferedReader;  
import java.io.InputStreamReader;  
import java.io.IOException;  
import java.util.StringTokenizer;  
public class Main {  
    public static void main(String[] args) throws IOException {  
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));  
        int[] arr = new int[26]; //영문자 개수  
	    String s = bf.readLine();  //문자열 한 줄 입력 받음
  
        for(int i=0;i<s.length();i++)  //입력 받은 문자열의 길이만큼
        {  
            if(65<=s.charAt(i) && s.charAt(i)<=90)  //대문자 범위
            {  
                arr[s.charAt(i)-65]++;  //A-65 = 0, B-65 = 1, 
            }  
            else  //소문자 범위
			    arr[s.charAt(i)-97]++;  //a-97=0, b-97 = 1
        }  
        int max = -1;  
        char ch ='?';  
        for(int i=0;i<26;i++)  //영문자 개수만큼 반복
        {  
            if(max<arr[i])  //최대값 구하기
            {  
                max = arr[i];  
                ch = (char)(i+65);  //0+65 = A, 1+65 = B
            }  
            else if(max==arr[i])  
            {  
                ch ='?';  
            }  
        }  
        System.out.println(ch);  
    }  
}

2941번 - 다시


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import java.io.BufferedReader;  
import java.io.InputStreamReader;  
import java.io.IOException;  
import java.util.StringTokenizer;  
public class Main {  
    public static void main(String[] args) throws IOException {  
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));  
        //키보드 입력인 바이트 스트림을 char 타입으로 처리 후, string 타입으로 변환하여 저장  
  String s = bf.readLine(); //한 줄 입력 받음  
  String[] croatiaAlphabet = {"c=","c-","dz=","d-","lj","nj","s=","z="};  
        //크로아티아 알파벳 초기화  
  for(String value : croatiaAlphabet)  //크로아티아 알파벳 배열에 있는 각각의 요소를 value에 대입하여 반복  
  {  
            s = s.replace(value, "A"); //Value의 값을 모두 A로 변환  
  }  
        System.out.println(s.length()); //변경된 문자열 s의 길이 출력  
  
  }  
}
 

1316번 - 다시


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import java.io.BufferedReader;  
import java.io.InputStreamReader;  
import java.io.IOException;  
  
public class Main {  
    static BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));  
  
    public static void main(String[] args) throws IOException {  
        int cnt =0;  
        int n = Integer.parseInt(bf.readLine());  
        for(int i=0;i<n;i++)  
        {  
            if(check())  
            {  
                cnt++;  
            }  
        }  
        System.out.println(cnt);  
    }  
    public static boolean check() throws IOException{  
        boolean[] check = new boolean[26];  
        int prev = 0;  
        String s = bf.readLine();  
  
        for(int i=0;i<s.length();i++)  
        {  
            int now = s.charAt(i);  
  
            if(prev!= now){ //연속되지 않은 문자인경우, 이전 문자와 현재 문자가 다른 경우  
			    if(check[now-'a']==false) //boolean 배열 초기값 : false, 해당 문자가 처음 나온 경우  
			    {  
                    check[now-'a']= true;  
                    prev = now;  
                }  
                else{ //해당 문자가 이미 나온 경우 있는 경우  
				    return false;  
                }  
            }  
            else{ //연속되는 문자인 경우  
			    continue;  
            }  
        }  
        return true;  
    }  
}

1

25206번 - 다시


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import java.io.BufferedReader;  
import java.io.InputStreamReader;  
import java.io.IOException;  
import java.io.StringReader;  
import java.util.StringTokenizer;  
  
public class Main {  
    public static void main(String[] args) throws IOException {  
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));  
  
        double sumnum = 0; //학점 총합 변수  
  double sumgrade = 0; // 학점 x 과목평점 변수  
  StringTokenizer st;  
  
        for(int i=0;i<20;i++)  
        {  
            st = new StringTokenizer(bf.readLine());  
            String subject = st.nextToken(); //과목명  
		    double num = Double.parseDouble(st.nextToken()); //학점  
		    String grade = st.nextToken(); //등급  
		    double score =0;  
  
            if(!(grade.equals("P")))  
            {  
                switch (grade)  
                {  
                    case "A+":  
                        score = 4.5;  
                        break;  
                    case "A0":  
                        score = 4.0;  
                        break;  
                    case "B+":  
                        score = 3.5;  
                        break;  
                    case "B0":  
                        score = 3.0;  
                        break;  
                    case "C+":  
                        score = 2.5;  
                        break;  
                    case "C0":  
                        score = 2.0;  
                        break;  
                    case "D+":  
                        score = 1.5;  
                        break;  
                    case "D0":  
                        score = 1.0;  
                        break;  
                    case "F":  
                        score = 0.0;  
                        break;  
                    default:  
                        break;  
                }  
                sumgrade+=(score*num);  
                sumnum +=num;  
            }  
        }  
        System.out.printf("%.6f",sumgrade/sumnum);  
  
    }  
}
This post is licensed under CC BY 4.0 by the author.