일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 시뮬레이션
- oracle
- Java
- Python
- 다리 만들기
- 구현
- 브루트포스
- 알고리즘
- 백트래킹
- 다이나믹프로그래밍
- 새벽코딩
- 탐색
- 아스키코드
- Queue
- 문자열
- LIS
- DP
- 백준
- 배열
- 빅데이터
- 스택
- BFS
- SQL
- Stack
- 프로그래머스
- 그리디
- HashMap
- BufferedReader
- dfs
- 완전탐색
- Today
- Total
새벽코딩
[백준] [10708] 크리스마스 파티 본문
https://www.acmicpc.net/problem/10708
10708번: 크리스마스 파티
JOI는 친구 1부터 친구 N까지 총 N 명의 친구와 함께, 크리스마스 파티에 갔습니다. 크리스마스 파티 분위기도 달아오르니, JOI는 친구들과 함께 다음과 같은 게임을 하기로 했습니다. 가장 먼저, JO
www.acmicpc.net
문제
JOI는 친구 1부터 친구 N까지 총 N 명의 친구와 함께, 크리스마스 파티에 갔습니다. 크리스마스 파티 분위기도 달아오르니, JOI는 친구들과 함께 다음과 같은 게임을 하기로 했습니다.
- 가장 먼저, JOI는 N명의 친구 중 한 명을 선택합니다. 이제 그 친구를 '타겟'이라고 부릅시다.
- JOI는 타겟으로 고른 친구에게, 타겟이 되었다는 것을 몰래 알려줍니다. 타겟이 아닌 친구들은 누가 타겟인지 알 수 없습니다.
- 타겟이 아닌 친구들은 각자 타겟이 누구일까 생각해서, 그 사람의 이름을 종이에 씁니다. 타겟은 자기자신의 이름을 종이에 씁니다.
- 모든 사람이 종이에 이름을 썼다면, JOI는 타겟의 이름을 발표합니다.
- 예상이 맞은 사람은 1점을 얻습니다. 당연히, 타겟은 자신의 이름을 적었으므로, 반드시 1점을 얻습니다. 예상이 빗나간 사람은 점수를 주지 않습니다.
- 추가로, 예상이 빗나간 사람의 수가 X명일 경우, 타겟은 추가로 X점을 얻습니다.
입력
입력은 총 3 + M 줄이 주어집니다.
첫 번째 줄에는 친구들의 수 N (3 ≦ N ≦ 100)이 주어집니다.
두 번째 줄에는 JOI와 친구들이 했던 게임의 횟수 M (3 ≦ M ≦ 100)이 주어집니다.
세 번째 줄에는 M개의 정수 A1, A2, ..., AM 이 공백을 사이에 두고 주어집니다. i번째 (1 ≦ i ≦ M) 게임의 타겟이 친구 Ai (1 ≦ Ai ≦ N) 라는 것을 나타냅니다.
이어지는 M개의 줄 중 i(1 ≦ i ≦ M)번째 줄에는, N개의 정수 Bi,1, Bi,2, ..., Bi,N가 공백을 사이에 두고 주어집니다. 이것은 i번째 게임에서 친구 j(1 ≦ j ≦ N)가 친구 Bi,j (1 ≦ Bi,j ≦ N)의 이름을 종이에 썼다는 것을 의미합니다. 타겟은 자신의 이름을 종이에 쓰도록 되어 있으므로, j = Ai 이면, 반드시 Bi,j = j입니다.
출력
M번의 게임에서, 각각의 친구들이 얻은 합계 점수를 출력하세요.
총 N줄의 출력에서, j번째 (1 ≦ j ≦ N) 줄에는 친구 j의 합계 점수를 출력하세요.
예제 입력 1 복사
3
4
1 2 3 2
1 1 2
3 2 2
1 1 3
2 2 2
예제 출력 1 복사
3
4
5
예제 입력 2 복사
5
3
3 3 1
2 4 3 3 3
4 3 3 3 1
1 3 4 1 1
예제 출력 2 복사
3
1
6
3
2
힌트
예제 1의 경우, 3명의 친구가 4번의 게임을 합니다.
- 첫 번째 게임의 타겟은 '친구 1'이므로, 친구 1 은 2점, 친구 2 는 1점, 친구 3 은 0점을 얻습니다.
- 두 번째 게임의 타겟은 '친구 2'이므로, 친구 1 은 0점, 친구 2 는 2점, 친구 3 은 1점을 얻습니다.
- 세 번째 게임의 타겟은 '친구 3'이므로, 친구 1 은 0점, 친구 2 는 0점, 친구 3 은 3점을 얻습니다.
- 네 번째 게임의 타겟은 '친구 2'이므로, 친구 1 은 1점, 친구 2 는 1점, 친구 3 은 1점을 얻습니다.
4번의 게임 종료 후의 합계 점수는, 친구 1 은 3점, 친구 2 는 4점, 친구 3은 5점이 됩니다.
※ JAVA 코드(크리스마스 파티)
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int N = Integer.parseInt(br.readLine());
int M = Integer.parseInt(br.readLine());
int []target = new int[M+1];
int []dap = new int[N+1];
st = new StringTokenizer(br.readLine());
for(int i=1;i<=M;i++) {
target[i] = Integer.parseInt(st.nextToken());
}
for(int i=1;i<=M;i++) {
st = new StringTokenizer(br.readLine());
int X = 0;
for(int j=1;j<=N;j++) {
int now = Integer.parseInt(st.nextToken());
if(now == target[i]) {
dap[j] += 1;
} else {
X++;
}
}
dap[target[i]] += X;
}
for(int i=1;i<=N;i++) {
System.out.println(dap[i]);
}
}
}
※ 결과(크리스마스 파티)
※ 생각정리 (크리스마스 파티)
크리스마스라서 크리스마스가 들어간 문제를 풀고 싶었다..
친구들의 수 만큼 배열을 초기화하고 배열을 반복해서 읽어들이는 동안 타겟인 친구의 정수가 입력되었을 시에는 해당 배열에 1씩 값을 더해주었다. 틀린 경우는 X변수에 값을 담아 끝에서 해당 타겟에 값을 더해주어 마치었다.
-새벽코딩-
'알고리즘' 카테고리의 다른 글
[프로그래머스] 크기가 작은 부분문자열 (구현) (2) | 2022.12.27 |
---|---|
[백준] [12852] 1로 만들기 2 (dp) (0) | 2022.12.26 |
[백준] [1926] 그림 (0) | 2022.12.22 |
[백준] [9205] 맥주 마시면서 걸어가기 (2) | 2022.12.16 |
[백준] [14502] 연구소 (JAVA) (DFS, BFS) (0) | 2022.12.15 |