코테 준비 10일차_8/18

Jieun·2026년 8월 18일

코딩테스트 준비

목록 보기
3/8
  1. 주사위 게임3
    조건이 4개여서 case문 쓰면 될거같은데 조건을 코드로 푸는게 어렵다
    주사위 4개 중 2개가 같은걸 어떻게 표현해야 될까
  • 제출 정답
class Solution {
    public int solution(int a, int b, int c, int d) {
    int[] count = new int[7];
    count[a]++;
    count[b]++;
    count[c]++;
    count[d]++;
    
    for(int i=1;i<=6;i++) {
    if(count[i] ==4) {
    	return 1111* i;
        }
    }
    
    for(int i =1; i<=6;i++) {
    if(count[i] ==3) {
    int p = i;
    int q = 0;
    for(int j=1;j<=6;j++) {
    	if(count[j] == 1) {
        	q = j;
            break;
            }
        }
        return (int) Math.pow(10*p+q,2);
        }
    }
    
    int p = 0, q =0;
    boolean twopairs = false;
    for(int i = 1; i <= 6;i++) {
    	if(count[i] ==2) {
        	if(p==0) {
            p=i;
            } else{
            q=i;
            twopairs = true;
            }
        }
    }
    if(twopairs) {
    	return (p+q) * Math.abs(p-q);
        }
    for(int i =1;i<=6;i++) {
    if(count[i] ==2) {
    int r1 =0, r2=0;
    for(int j=1;j<=6;j++) {
    	if(count[j] ==1) {
        	if(r1==0) r1 =j;
            else r2 =j;
            }
        }
        return r1*r2;
        }
    }
    
    int min = 7;
    for(int i=1;i<=6;i++) {
    if(count[i] ==1) {
    	min = Math.min(min,i);
        }
    }
    return min;
    }
}
  • 다른 풀이

    정렬로 케이스 분류해서 풀어도 가능
  1. 글자 이어 붙여 문자열 만들기
  • 초기 정답
class Solution {
    public String solution(String my_string, int[] index_list) {
        StringBuilder answer = new StringBuilder();
        for(int i=0;i<index_list.length;i++) {
            answer += my_string[i];
        }
        return answer;
    }
}
  • 제출 정답
class Solution {
    public String solution(String my_string, int[] index_list) {
        StringBuilder answer = new StringBuilder();
        for(int i=0;i<index_list.length;i++) {
            answer.append(my_string.charAt(index_list[i]));
        }
        return answer.toString();
    }
}

문자열의 특정 위치의 문자를 가져올때는 charAt()을 사용해야됨
리턴타입이 String이라 .toString()을 붙여야함

  1. 9로 나눈 나머지
    그냥 숫자를 9로 나눈 나머지를 반환하면 될거같은데 오류 생김
  • 초기 정답
class Solution {
    public int solution(String number) {
        int answer = 0;
        answer = (int) number % 9;
        return answer;
    }
}
  • 제출 정답
class Solution {
    public int solution(String number) {
        int answer = 0;
        for(int i=0;i<number.length();i++) {
            answer += number.charAt(i)-'0';
        }
        return answer % 9;
    }
}

각 자리 숫자를 더하고 %9 하면 됨
문자열이라 반복문 돌면서 숫자로 변환하는데 아스키 코드 0값이 48이라 문자열을 숫자로 변환하고 싶으면 '0'을 빼면 됨

profile
비전공자의 백엔드 생존기: 어제보다 1% 더 성장하기

0개의 댓글