[프로그래머스] 230705 코딩테스트 연습

    SMALL

    1. 코드 처리하기

    (1) 조건

    - 문자열 code를 읽으며, 만약 문자가 "1" 이면 mode 변경
    - mode: 0, 1 존재
    - 결과 문자열 ret 생성

    mode : 0
    case1. code[idx]가 "1"이 아닐 때, 짝수 idx를 가지는 code[idx]를 ret 맨 뒤에 추가
    case2. code[idx]가 "1"일 때, mode를 0에서 1로 변경

    mode : 1
    case1. code[idx]가 "1"이 아닐 때, 홀수 idx를 가지는 code[idx]를 ret 맨 뒤에 추가
    case2. code[idx]가 "1"일 때, mode를 1에서 0로 변경

    - 시작할 때, mode는 0
    - return하려는 ret이 빈 문자열 > "EMPTY" return

     

    (2) 코드

    // 시작할 때 mode는 0
    // return 하려는 ret가 만약 빈 문자열 > "EMPTY"를 return
    
    function solution(code) {
        var ret = '';
        var mode = 0;
        var str = code.split('');
        
        for(var i=0; i<str.length; i++) {
            if (mode == 0) { 
                if (str[i] == "1") {
                        mode = 1;
                    } else { // str[i] != "1"
                        if (i%2 == 0) {
                            ret += str[i];
                        }
                    } 
            } else if (mode == 1) {
                if (str[i] == "1") {
                    mode = 0;
                } else{
                    if (i%2 == 1) {
                        ret += str[i];
                    }
                }
            }    
        }
        
        if (ret == "") {
            ret = "EMPTY";
        }
        
        return ret;
    }

     

     

    2. 등차수열의 특정한 합만 더하기

    // a+d*idx
    
    function solution(a, d, included) {
        var answer = 0;
        
        for (var i=0; i<included.length; i++) {
            if (included[i] == true) {
                answer += (a+d*i);
            } else {
                continue;
            }
        }
        
        
        return answer;
    }

     

    3. 주사위 게임 2

    (1) 조건

    - 1부터 6까지 적힌 주사위 3개
    - 각 주사위의 값은 a, b, c

    점수 부여 기준
    - 세 숫자가 모두 다름 : a+b+c
    - 세 숫자 중 어느 두 숫자가 같음 : (a + b + c) × (a^2 + b^2 + c^2)
    - 세 숫자가 모두 같음 :  (a + b + c) × (a^2 + b^2 + c^2) × (a^3 + b^3 + c^3)

    제한 사항
    - a, b, c는 1이상 6이하의 정수

     

    (2) 코드

    function solution(a, b, c) {
        var answer = 0;
        
        // answer = (a+b+c) * (a*a+b*b+c*c) * (a*a*a+b*b*b+c*c*c);
        
        // 제한사항 조건 주기
        if ( a>=1 && b>=1 && c>=1 && a<=6 && b<=6 && c<=6) {
            if ( a == b ) {
                if ( b == c ){ // 3개 다 동일
                    answer = (a+b+c) * (a*a+b*b+c*c) * (a*a*a+b*b*b+c*c*c);
                } else { // ( b != c )
                    // 2개 동일
                    answer = (a+b+c) * (a*a+b*b+c*c);
                }
            } else { // ( a != b )
                if ( b == c ){ // 2개 동일
                    answer = (a+b+c) * (a*a+b*b+c*c);
                } else { // ( b != c )
                    if ( a == c) { // 2개 같음
                        answer = (a+b+c) * (a*a+b*b+c*c);
                    } else { // ( a != c )
                        // 3개 다 다름
                        answer = (a+b+c);
                    }
                }
            }
        } else {
            answer = "a,b,c 값을 다시 입력해주세요.";
        }
        
        return answer;
    }

     

     

     

     

    728x90

    댓글