티스토리 뷰
2422번: 한윤정이 이탈리아에 가서 아이스크림을 사먹는데
첫째 줄에 정수 N과 M이 주어진다. N은 아이스크림 종류의 수이고, M은 섞어먹으면 안 되는 조합의 개수이다. 아래 M개의 줄에는 섞어먹으면 안 되는 조합의 번호가 주어진다. 같은 조합은 두 번
www.acmicpc.net
풀이
1) 그래프 문제를 풀때와 같이 인접행렬 map[][] 을 만든다.
2) 3중 포문으로 한방에 검사한다.
2-1) 1부터 N까지 숫자를 선택한다. -> i
2-2) i부터 N까지 숫자를 선택한다. -> j
2-3) map[i][j] = false면 j부터 N까지 숫자를 선택한다. -> k
2-4) map[i][k] = false && map[j][k] = false 이면 answer++
3) answer 출력
주의사항
1) 조합을 쓸 필요가 없다
package com.baekJoon;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StringReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class BJ_S5_2422_한윤정이이탈리아에가서아이스크림을사먹는데 {
static BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
static StringTokenizer tokens;
static int N,M,answer;
static boolean map[][];
public static void main(String[] args) throws NumberFormatException, IOException {
input = new BufferedReader(new StringReader(src));
tokens = new StringTokenizer(input.readLine());
N = Integer.parseInt(tokens.nextToken());
M = Integer.parseInt(tokens.nextToken());
map = new boolean[N][N];
for(int i=0; i<N; i++) {
map[i][i] = true;
}
for(int i=0; i<M; i++) {
tokens = new StringTokenizer(input.readLine());
int start = Integer.parseInt(tokens.nextToken())-1;
int end = Integer.parseInt(tokens.nextToken())-1;
map [start][end] = true;
map [end][start] = true;
}
// for(boolean x[] : map) {
// System.out.println(Arrays.toString(x));
// }
for(int i=0; i<N; i++) {
for(int j=i; j<N; j++) {
if(!map[i][j]) {
for(int k=j; k<N; k++) {
if(!map[j][k] && !map[i][k]) {
answer++;
// System.out.println((i+1) +" "+(j+1) +" "+(k+1));
}
}
}
}
}
System.out.println(answer);
}
static String src =
"5 3\r\n" +
"1 2\r\n" +
"3 4\r\n" +
"1 3";
}
후기
처음엔 조합으로 3숫자를 뽑아서 검사하는식으로 했지만 시간초과가 났다.
아니나 다를까 조금만 생각하면 쉽게 풀수있는 방법이 있었다. 결국 솔루션을 봤지만..
하지만 아마 하루 동안 붙잡아도 떠올리지 못했을것 같다. 그 만큼 나에겐 창의력이 부족한것 같다.
부족한 창의력은 경험으로 메꿔야한다.
'Algorithm' 카테고리의 다른 글
[백준] G3 9944 NxM 보드 완주하기 (java) (0) | 2021.01.02 |
---|---|
[백준] G3 8982 수족관 1 (java) (0) | 2021.01.02 |
[백준] S3 1654 랜선 자르기 (java) (0) | 2021.01.02 |
[백준] S4 1244 스위치 켜고 끄기 (java) (0) | 2021.01.02 |
[백준] S5 1436 영화감독 숌 (java) (0) | 2021.01.02 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 현꾸라지
- 우선순위큐
- 다익스트라
- PriorityQueue
- 문자열
- map
- 백준
- Spring Boot
- DFS
- 구현
- S2
- 백트래킹
- 코딩새내기
- 리액트 네이티브
- 시뮬레이션
- BFS
- SWEA
- Spring
- G5
- S3
- 객체지향
- 그리디
- 알고리즘
- 리액트
- java
- react
- 자바
- g4
- laugh4mile
- react native
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함