[Algorithm/Softeer] [한양대 HCPC 2023] 개표

[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이 아닐 경우에만 “ “를 출력한다.
  • 마지막으로 나머지 만큼를 출력한다.

느낀점


© 2023. All rights reserved.

by SoftyChoo