백준 쌍의 합

KIMYEONGJUN·2024년 12월 27일
post-thumbnail

문제

내가 생각했을때 문제에서 원하는부분

첫째 줄에 테스트 케이스의 수 (< 100)가 주어진다.
각 테스트 케이스는 한 줄로 이루어져 있고, n이 주어진다.

각 테스트 케이스마다 n을 만드는 쌍을 사전순으로 출력한다.
n을 만드는 쌍이 없는 경우에는 아무것도 출력하지 않는다.
예제 출력 형식을 참고해 출력한다.

내가 이 문제를 보고 생각해본 부분

BufferedReader를 사용하여 입력을 읽고, 첫 번째 줄에서 테스트 케이스의 수 t를 읽는다.
결과를 효율적으로 누적하기 위해 StringBuilder를 사용해준다.
테스트 케이스 반복:
각 테스트 케이스에 대해 자연수 n을 읽고, 결과 문자열에 "Pairs for n:"을 추가한다.
쌍 찾기:
1부터 n-1까지 반복하면서, n을 만드는 두 자연수 a와 b를 찾는다.
a가 b보다 작은 경우만 쌍으로 인정한다.
결과 정리:
쌍이 발견된 경우, 마지막 쉼표를 제거하고 줄바꿈을 추가한다.
쌍이 없는 경우에도 줄바꿈을 추가한다.
최종 결과를 StringBuilder에서 문자열로 변환하여 한 번에 출력한다

코드로 구현

package baekjoon.baekjoon_25;

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

// 백준 5217번 문제
public class Main881 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int t = Integer.parseInt(br.readLine());
        StringBuilder sb = new StringBuilder();

        for(int i = 0; i < t; i++) {
            int n = Integer.parseInt(br.readLine());
            sb.append("Pairs for ").append(n).append(":");

            boolean found = false;
            for(int a = 1; a < n; a++) {
                int b = n - a;
                if(a < b) { // a와 b가 다르고 a가 b보다 작은 경우
                    sb.append(" ").append(a).append(" ").append(b).append(",");
                    found = true;
                }
            }

            if(found) {
                sb.deleteCharAt(sb.length() - 1); // 마지막 쉼표 제거
                sb.append("\n");
            } else {
                sb.append("\n"); // 쌍이 없는 경우 새 줄 추가
            }
        }

        System.out.print(sb.toString()); // 결과를 한 번에 출력
        br.close();
    }
}

마무리

코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.

profile
Junior backend developer

0개의 댓글