개발 공부/백준 - java 풀이 모음

백준 #6 심화 1 - Java 풀이 모음 (15083, 3003, 2444, 10988, 1157, 2941, 1316, 25206)

맹꽁이+ 2025. 11. 25. 20:22

안녕하세요. 맹꽁이입니다.

오늘은 백준 사이트 단계별 문제풀이의 심화 1 풀어볼게요.

 

이전글: #5 문자열

https://rb-cloud.tistory.com/8


#15083 - 새싹

import java.io.IOException;

public class Main{
    public static void main(String[] args) throws IOException{
        System.out.print("         ,r'\"7\nr`-_   ,'  ,/\n \\. \". L_r'\n   `~\\/\n      |\n      |");
    }
}

#3003 - 단어 길이 재기

import java.io.IOException;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;

public class Main{
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer st = new StringTokenizer(br.readLine());

        int[] chess = {1,1,2,2,2,8};

        for(int i=0;i<6;i++){
            chess[i] = chess[i]-Integer.parseInt(st.nextToken());
        }

        for(int c: chess){
            bw.write(c+" ");
        }

        bw.flush();
        bw.close();
    }
}

#2444 - 별 찍기 - 7

import java.io.IOException;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class Main{
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int n = Integer.parseInt(br.readLine());

        for (int i=0;i<n;i++) {
            for (int j=0;j<n-1-i;j++) {
                bw.write(" ");
            }
            for (int k=0;k<2*i+1;k++) {
                bw.write("*");
            }
            bw.newLine();
        }

        for (int i=n-2;i>=0;i--) {
            for (int j = 0; j < n - 1 - i; j++) {
                bw.write(" ");
            }
            for (int k = 0; k < 2 * i + 1; k++) {
                bw.write("*");
            }
            bw.newLine();
        }

        bw.flush();
        bw.close();
    }
}

#10988 - 팰린드롬인지 확인하기

import java.io.IOException;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;

public class Main{
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        String a = br.readLine();
        StringBuilder sb = new StringBuilder(a);
        String bs = sb.reverse().toString();

        if(bs.equals(a)){
            bw.write(1+"");
        }else{
            bw.write(0+"");
        }

        bw.flush();
        bw.close();
    }
}

#1157 - 숫자의 합

import java.io.IOException;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class Main{
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        String a = br.readLine().toUpperCase();
        int[] cnt = new int[26];

        for(int i=0;i<a.length();i++){
            cnt[a.charAt(i)-'A']++;
        }

        int max=-1;
        char result = '?';
        for(int i=0;i<26;i++){
            if(cnt[i]>max){
                max = cnt[i];
                result = (char)(i+'A');
            }else if (cnt[i] == max) {
                result = '?';
            }
        }

        bw.write(result+"");

        bw.flush();
        bw.close();
    }
}

#2941 - 크로아티아 알파벳

풀이 1)

import java.io.IOException;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class Main{
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        String s = br.readLine();
        int count=0;
        int i=0;

        while(i<s.length()){
            if(i+2<s.length() && s.charAt(i)=='d' && s.charAt(i+1)=='z' && s.charAt(i+2)=='='){
                count++;
                i+=3;
            }

            else if(i+1<s.length()){
                String two = s.substring(i, i+2);

                if(two.equals("c=") || two.equals("c-")
                        || two.equals("d-") || two.equals("lj")
                        || two.equals("nj") || two.equals("s=")
                        || two.equals("z=")){
                    count++;
                    i+=2;
                }
                else{
                    count++;
                    i++;
                }
            }
            else{
                count++;
                i++;
            }
        }

        bw.write(count+"");
        bw.flush();
        bw.close();
    }
}

 

풀이 2)

import java.io.IOException;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class Main{
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        String s = br.readLine();

        String[] cro = {"dz=", "c=", "c-", "d-", "lj", "nj", "s=", "z="};

        for(String c: cro){
            s=s.replace(c, "*");
        }

        bw.write(s.length()+"");
        bw.flush();
        bw.close();
    }
}

#1316 - 그룹 단어 체커

import java.io.*;
import java.util.Arrays;

public class Main{
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int a = Integer.parseInt(br.readLine());
        int count=a;
        int[] list = new int[26];

        for(int i=0;i<a;i++){
            Arrays.fill(list, 0);
            String word = br.readLine();

            //word 한 문자마다 돌기
            for(int j=0;j<word.length();j++){
                //a면 -'a'로 0이 idx에 들어가도록
                int idx = word.charAt(j)-'a';
                
                //list[0]이 0일 때만 1로 바꾸기
                if(list[idx]==0){
                    list[idx] = 1;
                }
                //list[0]이 이미 1이고, 바로 전 거랑 같은 알파벳이 아니면 count--, break
                else if(list[idx]==1 && j>0 && word.charAt(j) != word.charAt(j-1)){
                    count--;
                    break;
                }
            }
        }

        bw.write(count+"");
        bw.flush();
        bw.close();
    }
}

#25206 - 숫자의 합

import java.io.*;
import java.util.StringTokenizer;
import java.util.Arrays;

public class Main{
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer st;

        double sumScore = 0.0;
        double sumCredit = 0.0;

        for (int i = 0; i < 20; i++) {
            st = new StringTokenizer(br.readLine());

            st.nextToken();

            double credit = Double.parseDouble(st.nextToken());
            String grade = st.nextToken();

            if (grade.equals("P")) {
                continue;
            }

            double point = 0.0;

            switch (grade) {
                case "A+":
                    point = 4.5;
                    break;
                case "A0":
                    point = 4.0;
                    break;
                case "B+":
                    point = 3.5;
                    break;
                case "B0":
                    point = 3.0;
                    break;
                case "C+":
                    point = 2.5;
                    break;
                case "C0":
                    point = 2.0;
                    break;
                case "D+":
                    point = 1.5;
                    break;
                case "D0":
                    point = 1.0;
                    break;
                case "F":
                    point = 0.0;
                    break;
            }

            sumScore += credit * point;
            sumCredit += credit;
        }

        double avg = sumScore / sumCredit;

        bw.write(avg + "");
        bw.flush();
        bw.close();
    }
}

실버 시작하면서 점점 어려워지는 중...