문제 설명

수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다.

1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ...
2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ...
3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ...

1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때, 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return 하도록 solution 함수를 작성해주세요.

제한 조건
  • 시험은 최대 10,000 문제로 구성되어있습니다.
  • 문제의 정답은 1, 2, 3, 4, 5중 하나입니다.
  • 가장 높은 점수를 받은 사람이 여럿일 경우, return하는 값을 오름차순 정렬해주세요.
입출력 예answersreturn
[1,2,3,4,5] [1]
[1,3,2,4,2] [1,2,3]
입출력 예 설명

입출력 예 #1

  • 수포자 1은 모든 문제를 맞혔습니다.
  • 수포자 2는 모든 문제를 틀렸습니다.
  • 수포자 3은 모든 문제를 틀렸습니다.

따라서 가장 문제를 많이 맞힌 사람은 수포자 1입니다.

입출력 예 #2

  • 모든 사람이 2문제씩을 맞췄습니다.
import java.util.*;
class Solution {
    public int[] solution(int[] answers) {
        int[] answer = {};
        int[] supoza1 = {1,2,3,4,5};
        int[] supoza2 = {2,1,2,3,2,4,2,5};
        int[] supoza3 = {3,3,1,1,2,2,4,4,5,5};
        int[] supoza_flag = {0,0,0};
        
        for(int i = 0; i < answers.length; i++){
            if(supoza1[(i % supoza1.length)] == answers[i])
                supoza_flag[0]++;
            if(supoza2[(i % supoza2.length)] == answers[i])
                supoza_flag[1]++;
            if(supoza3[(i % supoza3.length)] == answers[i])
                supoza_flag[2]++;
        }
        
        int max = 0;
        max = Math.max(supoza_flag[0],Math.max(supoza_flag[1],supoza_flag[2]));
        
        ArrayList<Integer> arr1 = new ArrayList<Integer>();
        if(max == supoza_flag[0])
                arr1.add(1);
        if(max == supoza_flag[1])
                arr1.add(2);
        if(max == supoza_flag[2])
                arr1.add(3);
        
        Collections.sort(arr1);
        
        answer = new int[arr1.size()];
        for(int i = 0; i < arr1.size(); i++){
            answer[i] = arr1.get(i);
        }
        return answer;
    }
}

문제 설명

이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다.
별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요.


제한 조건
  • n과 m은 각각 1000 이하인 자연수입니다.

예시

입력

5 3

출력

*****
*****
*****

 

import java.util.Scanner;

class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();
        
        for(int i = 0; i < b; i++){
            for(int j = 0; j < a; j++){
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

문제 설명

프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.
전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.

제한 조건
  • s는 길이 4 이상, 20이하인 문자열입니다.
입출력 예phone_numberreturn
"01033334444" "*******4444"
"027778888" "*****8888"
class Solution {
    public String solution(String phone_number) {
        
        String front = "";
        String back = "";
        
        for(int i = 0; i < phone_number.length()-4; i++){
            front += "*";
        }
        
        back = phone_number.substring(phone_number.length()-4);
        return front + back;
    }
}

문제 설명

문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.

제한 사항
  • 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
  • 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.
입출력 예sreturn
"try hello world" "TrY HeLlO WoRlD"
입출력 예 설명

"try hello world"는 세 단어 "try", "hello", "world"로 구성되어 있습니다. 각 단어의 짝수번째 문자를 대문자로, 홀수번째 문자를 소문자로 바꾸면 "TrY", "HeLlO", "WoRlD"입니다. 따라서 "TrY HeLlO WoRlD" 를 리턴합니다.

class Solution {
    public String solution(String s) {
        String answer = "";
        String[] str = s.split("");
        int a = 0;
        for(int i = 0; i < str.length; i++){
            if(str[i].equals(" ")){
                answer += str[i];
                a = 0;
                continue;
            }
            if(a % 2 == 0){
                answer += str[i].toUpperCase();
                a++;
            }
            else{
                answer += str[i].toLowerCase();
                a++;
            }
        }
        
        return answer;
    }
}

 

+ Recent posts