-
[백준/BOJ] 5217번 : 쌍의 합 (JAVA / 자바)백준 2022. 2. 5. 17:09
안녕하세요~ 코딩하는 코알못 코메인입니다.
https://www.acmicpc.net/problem/5217
- 문제 -
난이도 브론즈 3 문제이다.
자바에서 입력방식은 scanner와 bufferedreader가 있다.
자바를 초반에 접하면 처음에 배우는 입력은 scanner이다. scanner가 bufferedreader보다 편하지만 속도가 느리다.
bufferedreader는 무조건 문자열로 받아오기때문에 정수형이나 실수형 변수에 저장하기 위해서는 입력과 형변환을 해줘야한다.
더 자세한 내용은 아래 글 참고 하면 좋다.
풀이 방법
예제 출력을 보면 pairs for 등이 같이 입력되어 있는데, 그 뒤에 오는 숫자는 1개가 두개가 3개가 될 수 도 있다. 그렇다면 Pairs for 과 입력값 n 그기로 ": "를 문자열을 만들어 저장한다.
그리고 쌍의 합을 찾는 for문을 만든다. 1 4가 왔으면 4 1은 안와도 되기 때문에 입력값 n의 /2 만큼만 반복하면 된다.
쌍의 값을 구해서 만들어둔 문자열에 값을 사이의 공백을 두고 추가한다.
쌍의 합이 서로 같은 수이면 오지 않아도 되기 때문에 if문으로 두 값이 같지 않을때만 문자열에 추가한다.
그리고 보면 매번 값이 추가 될때마다 ,가 존재 한다. 하지만 마지막에는 오면 안되기 때문에 값이 추가 되기 전에 먼저 추가를 해준다. 그렇다면 맨 처음 값에도 추가가 되기 때문에 맨 처음엔 추가 하지 않는 조건을 만들어준다.
코드로 보자.
-풀이-
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int T = Integer.parseInt(br.readLine()); for(int i = 0; i < T; i++) { int n = Integer.parseInt(br.readLine()); //출력 값을 저장할 문자열. String S = "Pairs for " + n + ": "; for(int j = 1; j <= n / 2; j++) { //쌍이 서로 같지 않을때만 문자열 추가 if(j != (n - j)) { if(j > 1) { S += ", "; } S += j + " " + (n - j); } } //출력 System.out.println(S); } } }
-결과-
아직 코딩 공부가 부족한 필자라 설명과 풀이 방법이 많이 미흡할 수 있다. 코딩 고수분들은 보시고 문제점이 있다면 댓글로 말해주시면 감사한 마음으로 참고 수정 하겠습니다.
'백준' 카테고리의 다른 글
[백준/BOJ] 5361번 : 전투 드로이드 가격 (JAVA / 자바) (0) 2022.02.05 [백준/BOJ] 5354번 : J박스 (JAVA / 자바) (0) 2022.02.05 [백준/BOJ] 5086번 : 배수와 약수 (JAVA / 자바) (0) 2022.02.05 [백준/BOJ] 5073번 : 삼각형과 세 변 (JAVA / 자바) (0) 2022.02.05 [백준/BOJ] 5063번 : TGN (JAVA / 자바) (0) 2022.02.04