백준 쌍의 합

KIMYEONGJUN·2024년 12월 27일
0
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개의 댓글

관련 채용 정보