[TIL] d+9

river·2022년 3월 15일
0

모의고사

완전 망할 뻔 했다... result 수를 잘못 읽어서 한 시간을 통으로 날리고 심지어 전채챗으로 혹시 오류가 아니냐고 물어보기까지 했다... 하... 진짜 게더 창 그대로 내려버리고 싶었다...........괴로워.................................

1번은 그럭저럭 쉬웠는데 그 1시간 헤매는 동안 2번으로 넘어갔다가 너무 어려워서 충격을 먹고 한참 꼬라봤음...

&

오늘 컨디션이 너어어무 별로라 통 집중이 안 되는 중... 그럼 잠을 더 자면 될 텐데 두시 전엔 잠이 오지도 않고 낮에 집중 못 한 만큼의 업보를 새벽에 갚느라 맘대로 눕지도 못하고 있다 ㅡ ㅅ ㅜ


알고리즘 풀이

수박수박수박수박수박수?

function solution(n) {
    let answer = [];
    
    for (let i = 0; i < n; i++) {
        answer[i-1]==='수' ? answer.push('박') : answer.push('수');
    }
    return answer.join("");
}

배열 answer의 인덱스(i)의 앞 인덱스(i-1)의 요소가 '수' 일 경우 '박'을, 아닐 경우 '수'를 넣어 ["수","박","수","박",...] 형태의 배열을 만들고, join() 함수를 사용해 구분 없이 합쳐 평범한(?) 반복 문자열로 만든다.


완주하지 못한 선수

function solution(participant, completion) {
    let answer = '';
    // let a
    // let b
    
    
    participant.sort();
    completion.sort();

        for(let i = 0; i < participant.length; i++){
            // console.log(completion.includes(participant[i]))
            // a = participant.sort();
            // b = completion.sort();
            if ( participant[i] != completion[i] ) {
                answer = participant[i]
                break;
            }
        }
    return answer
}

주석처리된 구문대로 짰다가 망해서 다시 짰다.

  1. 먼저 participant, completion 두 배열 모두 sort()를 사용해 정렬시킨다.(정렬 기준의 기본값은 유니코드 코드 포인트)

  2. 두 배열의 같은 인덱스의 요소별로 비교해 같지 않을 경우 participant 배열의 해당 인덱스 요소를 return하고 반복을 멈춘다.(break)


이상한 문자 만들기

function solution(s) {
    let srr = s.split(" ");
    let answer = [];    
    for(let i=0; i<srr.length; i++){
        let result = [];
        for(let j=0; j<srr[i].length; j++) {
            j%2==0 ? result += srr[i][j].toUpperCase() : result += srr[i][j].toLowerCase()
        }
        answer.push(result)
    }
    return answer.join(" ")
}
  1. 문자열 s를 공백에 따라 쪼개어 배열 srr에 저장한다.

  2. 반복문을 통해 쪼개 넣은 srr의 각 인덱스가 가리키는 요소를 확인한다.

  3. result라는 새 배열을 만들고, 조건문을 돌려 인덱스 j가 짝수일 때(j%2=0) srr의 요소 i의 요소 j를 대문자로 만들고, 반대로 홀수일 경우(j%2!=0) 소문자로 만든다.

  4. 비어있는 answer 배열에 넣어주고, 배열 요소 사이를 공백으로 변경해 문자열로 추출한다.


자릿수 더하기

function solution(n){
    let answer = 0;
    let ntstr = n.toString();
    
    for(let i = 0; i < ntstr.length; i++) {
        answer += parseInt(ntstr[i])
    }
    return answer
}
  1. 자연수 n을 문자열로 변환한다.
  2. 문자열로 변경한 n(ntstr)의 길이만큼 반복문을 돌려 answer에 지속적으로 숫자화한 ptstr[i]를 더해 넣는다.

#### 자연수 뒤집어 배열로 만들기

function solution(n) {
    let answer = [];
    let narr = [];
    let nstr = n.toString();
    for ( let i = 0; i < nstr.length; i++) {
        narr.push(parseInt(nstr[i]));
    }
    for ( let j = narr.length-1; j >= 0; j--) {
        answer.push(narr[j]);
    }
    return answer;
}

이것도 자연수를 문자열로 변환해 진행하였다.


정수 내림차순으로 배치하기

function solution(n) {
    let answer = [];
    let narr = [];
    let nstr = n.toString();
    
    for ( let i = 0; i < nstr.length; i++) {
        narr.push(parseInt(nstr[i]));
    }
    
    narr.sort(function(a,b){
        return b-a
    })
    
    return parseInt(narr.join(''));
}

이 문제 또한 문자열로 변경 후 진행하였는데, sort() 함수를 이용해 내림차순으로 설정해 주었다. 근데 배열의 재정렬에 대한 문제에서 sort를 써도 되는지 의문이다.





벨로그가 숨김글 기능을 만들어줬음 좋겟다아

profile
가보자고

0개의 댓글