문제
1보다 크거나 같고 12보다 작거나 같은 자연수가 주어졌을 때, 합이 n이 되는 두 수의 쌍을 찾는 프로그램을 작성하시오.
예를 들어, 5가 주어진 경우 가능한 쌍은 1,4와 2,3이 있다. 두 수는 항상 달라야 한다. 즉, 3,3은 올바른 쌍이 아니다. 또, 첫 번째 숫자가 두 번째 숫자보다 작아야 한다.
출력하는 쌍은 항상 사전순으로 출력해야 한다. 즉, 각 쌍의 작은 숫자로 비교를 해야 한다. 예를 들어 1,5는 2,4보다 사전순으로 앞선다.
입력
첫째 줄에 테스트 케이스의 수 (< 100)가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, n이 주어진다.
출력
각 테스트 케이스마다 n을 만드는 쌍을 사전순으로 출력한다. n을 만드는 쌍이 없는 경우에는 아무것도 출력하지 않는다.
예제 출력 형식을 참고해 출력한다.
Solution
공통적으로 들어가는 "Pairs for"을 반복문의 처음에 출력한 뒤 x값을 a, y값을 b로 선언해준다. 그리고 조건인 a값이 b보다 작아야 되며 같으면 안된다는 조건을 if문을 통해서 걸러 주도록 한다. 주의할 점이 있다면 ,(콤마)인데. 두개 이상일때만 출력해야하므로 스위치 역할을 하는 sw를 선언해서 2개이상일때만 출력하도록 만들어준다. ㅇㅅㅇ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
class Bakjoon {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n=sc.nextInt();
int sw=0;
for(int i=0;i<n;i++) {
String temp="Pairs for ";
int input=sc.nextInt();
int a=1; int b=1;
System.out.print(temp+input+':');
for(int j=1;j<input;j++) {
for(int k=j+1;k<input;k++) {
if(j<k && j!=k && j+k==input &&sw==0) {
System.out.print(" "+j+" "+k);
sw=1;}
else if(j<k && j!=k && j+k==input &&sw==1) {
System.out.print(", "+j+" "+k);
sw=1;
}
}
}
sw=0;
System.out.println();
}
}
}
|
https://www.acmicpc.net/problem/5217
반응형
'Algorithms > BOJ[Java]' 카테고리의 다른 글
[백준/10669번] 오늘 날짜 [Java] (0) | 2019.12.09 |
---|---|
[백준/10093번] 숫자 [Java] (0) | 2019.12.09 |
[백준/14624번] 전북대학교(2017 전북대학교 프로그래밍 경진대회) [Java] (0) | 2019.12.08 |
[백준/15552번] 빠른 A+B [Java] (1) | 2019.12.08 |
[백준/10991번] 별 찍기-16 [Java] (0) | 2019.12.08 |