코딩테스트/자바 문제풀이

[새싹: 문자열 (2)] 백준 2754, 27866, 11718, 9086

승요나라 2024. 7. 8. 23:33

2754번: 학점계산

https://www.acmicpc.net/problem/2754

 

# 코드

import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {
        // 빠른 입출력을 위한 BufferedReader 와 BufferedWriter
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        // 입력 값
        String input = br.readLine();

        // 성적
        double score = 0.0;

        // A, B, C, D (F는 그대로 0.0)
        switch (input.substring(0, 1)) {
            case "A":
                score += 4;
                break;
            case "B":
                score += 3;
                break;
            case "C":
                score += 2;
                break;
            case "D":
                score += 1;
                break;
        }

        // +, - 인 경우
        if (input.length() > 1) {
            switch (input.substring(1, 2)) {
                case "+":
                    score += 0.3;
                    break;
                case "-":
                    score -= 0.3;
                    break;
            }
        }

        // 출력
        bw.write(String.valueOf(score));

        // Reader 버퍼 닫기
        br.close();

        // Writer 버퍼 비운 뒤 닫기
        bw.flush();
        bw.close();
    }
}

 

 


27866번: 문자와 문자열

https://www.acmicpc.net/problem/27866

 

# 코드

import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {
        // 빠른 입출력을 위한 BufferedReader 와 BufferedWriter
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        // 입력 값
        String input = br.readLine();

        // i 번째 (int)
        int i = Integer.parseInt(br.readLine());

        // 출력
        bw.write(input.substring(i - 1, i));

        // Reader 버퍼 닫기
        br.close();

        // Writer 버퍼 비운 뒤 닫기
        bw.flush();
        bw.close();
    }
}

 

 


11718번: 그대로 출력하기

https://www.acmicpc.net/problem/11718

 

# 코드

import java.io.*;
import java.util.ArrayList;
import java.util.List;

public class Main {
    public static void main(String[] args) throws IOException {
        // 빠른 입출력을 위한 BufferedReader 와 BufferedWriter
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        // 각 입력줄을 저장할 리스트 생성
        List<String> list = new ArrayList<>();

        // 다음 입력줄이 없을 때까지 반복
        // 읽어온 줄은 변수 line 에 담아서 사용
        String line;
        while ((line = br.readLine()) != null) {
            list.add(line);
        }

        // 리스트에 담긴 입력줄을 차례로 출력
        for (String ele : list) {
            bw.write(ele + "\n");
        }

        // Reader 버퍼 닫기
        br.close();

        // Writer 버퍼 비운 뒤 닫기
        bw.flush();
        bw.close();

    }
}
  • BufferedReader 를 사용하는데 입력 줄의 개수가 미정일 때는 위 코드와 같이 변수에 담은 후 != null 연산을 조건으로 걸면 된다.
  • 이 때 변수의 선언은 while문보다 먼저 이루어져야 하는데, 아래처럼 조건문에 변수를 선언할 경우 조건문 내에서 변수 line 에 접근하지 못하기 때문이다.
while ((String line = br.readLine()) != null) // XXX

 

 


9086번: 문자열

https://www.acmicpc.net/problem/9086

 

# 코드

import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {
        // 빠른 입출력을 위한 BufferedReader 와 BufferedWriter
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        // 테스트 케이스의 개수 T
        int t = Integer.parseInt(br.readLine());

        // 테스트 케이스를 담을 T 크기의 배열
        String arr[] = new String[t];

        // 첫 글자 + 마지막 글자
        for (int i = 0; i < t; i++) {
            String line = br.readLine();
            arr[i] = line.substring(0, 1) + line.substring(line.length() - 1, line.length());
        }

        // 출력
        for (String ele : arr) {
            bw.write(ele + "\n");
        }

        // Reader 버퍼 닫기
        br.close();

        // Writer 버퍼 비운 뒤 닫기
        bw.flush();
        bw.close();

    }
}