본문 바로가기
Coding Test/Java Coding Test

[프로그래머스 / 자바] - PCCE 기출문제 6번 가채점

by nam_ji 2024. 9. 16.

PCCE 기출문제 6번 가채점 - LV.0

문제

  • A반 학생들은 시험이 끝난 뒤 성적이 나오기 전 자기 시험지를 가채점해 보았습니다.
  • 이후에 선생님이 실제 성적을 불러 줄 때 가채점한 점수와 실제 성적이 다른 학생들이 있어 선생님께 문의를 하려고 합니다.
  • 성적을 문의하려는 학생들의 번호가 담긴 정수 리스트 numbers와
  • 가채점한 점수가 성적을 문의하려는 학생 순서대로 담긴 정수 리스트 our_score,
  • 실제 성적이 번호 순서대로 담긴 정수 리스트 score_list가 주어집니다.
  • 주어진 solution 함수는 가채점한 점수가 실제 성적과 동일하다면 "Same"을,
  • 다르다면 "Different"를 순서대로 리스트에 담아 return하는 함수입니다.
  • solution 함수가 올바르게 작동하도록 한 줄을 수정해 주세요.


테스트 (인텔리제이)

  • 문의한 학생의 가채점 점수와 실제 점수를 비교하여 같은지 다른지 체크하는 문제이기 때문에
  • if문에서 가채점 점수 our_score과 score_list를 비교하는데
  • score_list는 전체 학생의 성적을 나타내기 때문에 문의한 학생 번호를 나타내는 numbers의 원소를 꺼내서 비교하게 해야 합니다.
  • 여기서 중요한 점은 배열은 0부터 시작하기 때문에 원하는 값을 얻기 위해서 numbers에서 꺼내 원소에서 1을 빼줘야 합니다.
package com.namji.codingtestpcce;

import java.util.Arrays;

public class PCCE_기출문제_6번_가채점 {
  public static void main(String[] args) {
    /*
    A반 학생들은 시험이 끝난 뒤 성적이 나오기 전 자기 시험지를 가채점해 보았습니다.
    이후에 선생님이 실제 성적을 불러 줄 때 가채점한 점수와 실제 성적이 다른 학생들이 있어 선생님께 문의를 하려고 합니다.
    성적을 문의하려는 학생들의 번호가 담긴 정수 리스트 numbers와
    가채점한 점수가 성적을 문의하려는 학생 순서대로 담긴 정수 리스트 our_score,
    실제 성적이 번호 순서대로 담긴 정수 리스트 score_list가 주어집니다.
    주어진 solution 함수는 가채점한 점수가 실제 성적과 동일하다면 "Same"을,
    다르다면 "Different"를 순서대로 리스트에 담아 return하는 함수입니다.
    solution 함수가 올바르게 작동하도록 한 줄을 수정해 주세요.

    제한사항
    - 1 ≤ numbers의 길이 = our_score의 길이 ≤ 10
      - 1 ≤ numbers의 원소 ≤ 31
      - 0 ≤ our_score의 원소 ≤ 100
      - our_score[i]는 numbers[i]번 학생이 가채점한 점수입니다.
      - numbers는 중복된 원소를 가지지 않습니다.
    - 2 ≤ score_list의 길이 ≤ 31
      - 0 ≤ score_list의 원소 ≤ 100
      - score_list에는 실제 성적이 [1번 학생 성적, 2번 학생 성적, 3번 학생 성적 …] 순서로 들어있습니다.

    입출력 예
    numbers	our_score	score_list	                      	result
    [1]	    [100]	    [100, 80, 90, 84, 20]	            ["Same"]
    [3, 4]	[85, 93]	[85, 92, 38, 93, 48, 85, 92, 56]	["Different", "Same"]

    입출력 설명
    #1
    - 1번 학생이 가채점한 성적은 100점으로 실제 성적과 같기 때문에 "Same"을 담아 return합니다.
    #2
    - 3번 학생이 가채점한 성적은 85점으로 실제 성적 38점과 다르기 때문에 "Different"를, 
      4번 학생이 채점한 성적은 93점으로 실제 성적과 같기 때문에 "Same"을 담아 return합니다.
    - java를 응시하는 경우 리스트는 배열, 함수는 메소드와 동일한 의미이니 풀이에 참고해주세요.
      - ex) solution 함수가 올바르게 작동하도록 한 줄을 수정해 주세요. 
        => solution 메소드가 올바르게 작동하도록 한 줄을 수정해 주세요.
     */
    int[] numbers = {3, 4};
    int[] our_score = {85, 93};
    int[] score_list = {85, 92, 38, 93, 48, 85, 92, 56};

    int num_student = numbers.length;
    String[] answer = new String[num_student];

    for (int i = 0; i < num_student; i++) {
      if (our_score[i] == score_list[numbers[i] -  1]) {
        answer[i] = "Same";
      }
      else {
        answer[i] = "Different";
      }
    }
    System.out.println(Arrays.toString(answer));
  }
}

프로그래머스 코드

class Solution {
    public String[] solution(int[] numbers, int[] our_score, int[] score_list) {
        int num_student = numbers.length;
        String[] answer = new String[num_student];

        for (int i = 0; i < num_student; i++) {
            if (our_score[i] == score_list[numbers[i] - 1]) {
                answer[i] = "Same";
            }
            else {
                answer[i] = "Different";
            }
        }

        return answer;
    }
}