[이것이 코딩테스트다] 실전문제5. 볼링공 고르기 (JAVA)
- Algorithm/Problem Solving
- 2021. 12. 23.
반응형
728x90
반응형
문제
A, B 총 2명의 사람이 있다. 두사람은 서로 다른 볼링공을 골라야한다. 볼링공은 총 N개이며, 각 볼링공마다 무게가 있다. 공의 번호는 1번부터 N까지다.
예시)
N = 5, M = 3
공의 번호 : 1 2 3 4 5
공의 무게 : 1 3 2 3 2
이때 두사람이 고를 수 있는 볼링공 번호의 조합 개수는?
(1, 2) -> (1, 3)
(1, 3) -> (1, 2)
(1, 4) -> (1, 3)
(1, 5) -> (1, 2)
(2, 3) -> (3, 2)
(2, 4) -> (3, 3) -> 불가능
(2, 5) -> (3, 2)
(3, 4) -> (2, 3)
(3, 5) -> (2, 2) -> 불가능
(4, 5) -> (3, 2)
-> 총 8개다.
풀이코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
import static java.util.stream.Collectors.toList;
public class Main {
private static int N;
private static int M;
private static int[] arrA;
private static int result;
public static void main(String[] args) {
input();
/**
(1, 2) (1, 3) (1, 4) (1, 5)
(2, 1) == (1, 2) 이므로 j 를 i + 1로 시작
*/
for (int i = 1; i < arrA.length; i++) {
for (int j = i + 1; j < arrA.length; j++) {
if (arrA[i] != arrA[j]) {
result++;
}
}
}
System.out.println(result);
}
/*
5 3
1 3 2 3 2
*/
private static void input() {
Scanner scanner = new Scanner(System.in);
int N = scanner.nextInt();
int M = scanner.nextInt();
arrA = new int[N + 1];
for (int i = 1; i < N + 1; i++) {
int value = scanner.nextInt();
arrA[i] = value;
}
}
}
Stream 을 사용한 풀이
https://devfunny.tistory.com/671
위 코드를 참고하여 다시한번 풀어보았다.
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
import static java.util.stream.Collectors.toList;
public class MainStream {
private static int N;
private static int M;
private static List<Integer> listA = new ArrayList<>();
public static void main(String[] args) {
input();
getPairs();
}
/*
5 3
1 3 2 3 2
*/
private static void input() {
Scanner scanner = new Scanner(System.in);
int N = scanner.nextInt();
int M = scanner.nextInt();
for (int i = 1; i < N + 1; i++) {
int value = scanner.nextInt();
listA.add(value);
}
}
private static void getPairs() {
List<int[]> pairs = listA.stream()
.flatMap(i -> listA.stream()
.filter(j -> i < j)
.map(j -> new int[]{i, j}))
.collect(toList());
System.out.println(pairs.size());
}
}
반응형
'Algorithm > Problem Solving' 카테고리의 다른 글
[이것이 코딩테스트다] 실전문제31. 금광 (JAVA) (0) | 2022.01.07 |
---|---|
[프로그래머스] Level1 42889번: 실패율 (JAVA) (0) | 2022.01.02 |
[Baekjoon 3190번] 뱀 문제 (with 자바) (0) | 2021.12.19 |
[leetcode] Easy-58번. Search Insert Position 문제풀이 (0) | 2021.12.14 |
[이것이 코딩테스트다] 실전문제3. 음료수 얼려 먹기 (JAVA) (0) | 2021.12.04 |