[Algorithm/Softeer] [한양대 HCPC 2023] 개표
성능 요약
실행 시간
164 ms
메모리
14.06 MB
채점결과
정답
제출 일자
2024-01-31 19:59:04
문제 설명
투표가 끝난 뒤에는 개표를 해야 한다. 일반적으로 개표는 칠판을 사용하며, 한 표가 나올 때마다 한 획을 추가로 긋는 방식을 사용한다.
이 문제에서는 다음과 같은 방식으로 개표를 진행한다.
- 모든 후보자는 0표, 즉 아무것도 그려져 있지 않는 상태로 시작한다.
- 어떤 후보자가 한 표를 받을 때마다, |
를 맨 뒤에 그린다.
- 단, 그 후보자가 5표를 받을 때마다, |
를 그리는 대신 이미 있던 4개의 |
에 가로줄을 그어 ++++
를 만든다. 이후 1칸의 공백을 뒤에 추가한다.
예를 들면, 12표를 받은 후보의 경우 칠판에는 ++++ ++++ ||
가 적히게 된다.
제약조건
1 ≤ T ≤ 100
1 ≤ n ≤ 100
입력형식
첫 번째 줄에 후보의 수 T가 주어진다.두 번째 줄부터 T개의 줄에 걸쳐, 각 후보가 받은 표의 수 n이 주어진다.
출력형식
각 후보에 대해, 칠판에 그려지게 되는 결과를 한 줄에 하나씩 출력한다.
입력예제1
3
12
1
5
출력예제1
++++ ++++ ||
|
++++
입력예제2
2
9
10
출력예제2
++++ ||||
++++ ++++
풀이
JAVA
import java.io.*;
import java.util.*;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int[] score = new int[n];
for(int i=0;i<n;i++){
score[i] = scanner.nextInt();
}
for(int i=0;i<n;i++){
calculateScore(score[i], n);
}
}
private static void calculateScore(int score, int n){
int share = score / 5;
int remain = score % 5;
for(int j=0;j<share;j++){
System.out.printf("++++");
if(j+1 != share) System.out.printf(" ");
}
if (share !=0 && remain != 0) System.out.printf(" ");
for(int j=0;j<remain;j++){
System.out.printf("|");
}
System.out.println();
}
}
KOTLIN
설명
- 먼저 사용자 입력으로 몇명의 후보가 있는지 받아준다.
- 후보의 수 만큼의 크기를 갖는 배열을 선언 후 각 값을 배열에 입력받는다.
- 순차적으로 반복하며 출력한다.
- 몫만큼 ++++를 출력하고 마지막 출력이 아닐 때만 “ “를 출력한다.
- 몫과 나머지가 둘다 0이 아닐 경우에만 “ “를 출력한다.
마지막으로 나머지 만큼 를 출력한다.