본문 바로가기

JS 코테

<Javascript-CT> 기초 DAY 23

 

문제1
	정수 n이 주어질 때, n을 문자열로 변환하여 return하도록 solution 함수를 완성해주세요.
    
문제2
	정수로 이루어진 리스트 num_list가 주어집니다.
    num_list에서 가장 작은 5개의 수를 제외한 수들을 오름차순으로 담은 리스트를 return하도록 solution 함수를 완성해주세요.

문제3
	1부터 6까지 숫자가 적힌 주사위가 두 개 있습니다. 두 주사위를 굴렸을 때 나온 숫자를 각각 a, b라고 했을 때
    얻는 점수는 다음과 같습니다.
		a와 b가 모두 홀수라면 a2 + b2 점을 얻습니다.
		a와 b 중 하나만 홀수라면 2 × (a + b) 점을 얻습니다.
		a와 b 모두 홀수가 아니라면 |a - b| 점을 얻습니다.
	두 정수 a와 b가 매개변수로 주어질 때, 얻는 점수를 return 하는 solution 함수를 작성해 주세요.

문제4
	문자열 myString이 주어집니다.
    "x"를 기준으로 해당 문자열을 잘라내 배열을 만든 후 사전순으로 정렬한 배열을 return 하는 solution 함수를 완성해 주세요.
	단, 빈 문자열은 반환할 배열에 넣지 않습니다.
    
문제5
	2차원 정수 배열 board와 정수 k가 주어집니다.
    i + j <= k를 만족하는 모든 (i, j)에 대한 board[i][j]의 합을 return 하는 solution 함수를 완성해 주세요.

 

 

🕹️ 문제를 풀기위해 알면 좋을 것 

- Array.sort

 

-Math.pow

Math.pow(base, exponent)

base를 exponent번 만큼 제곱한 값을 리턴한다.

 

 

-Math.abs()

Math.abs()
인수로 받은 값의 절대값을 리턴해준다

 

- Array.filter( )

filter 메서드는 주어진 배열의 일부에 대한 얕은 복사본을 생성,
제공된 함수에 의해 구현된 테스트를 통과한 요소로만 필터링 해 리턴해준다

 

- Array.split( )

split.split("string")
특정 문자열을 기준으로 잘라서 배열로 만들어준다고 알고 있었는데
그동안 string.split('') 이렇게 문자열을 배열로 바로 치환하는데만 사용해서
특정 문자열로 가르면 어떻게 되는지는 잊고 있었다ㅠ

const str = "axbxxcxxxdddxxcccx"

const words = str.split("x");
console.log(words);
// ["a", "b", "", "c", "", "", "ddd", "", "ccc", ""]

이렇게 해당 문자열은 "" 빈문자열로 치환해버린다ㅠ.... 그래서 거르는 작업이 더 필요하다

 

내 답안지

문제1

function solution(n) {
    return n.toString()
}

 

 

문제2

function solution(num_list) {
    const so = num_list.sort((a,b) => a-b)
    return so.slice(5)
}

배열을 오름차순 정렬한다음 가장작은수 5개를 제외하고 전부이니

인덱스 5~ 끝까지 slice했다

 

문제3

function solution(a, b) {
    if(a%2=== 1 && b%2===1){
        return Math.pow(a,2) + Math.pow(b,2)
    }else if(a%2 ===1 || b%2 ===1){
        return 2 * (a+b)
    }else if(a%2===0 && b%2===0){
        return Math.abs(a-b)
    }
}

** Math.pow는 인수가 두개 필요해ㅐㅐㅐㅐㅐㅐ

 

문제4

첫 시도

function solution(myString) {
    const temp = myString.split('x')
    return temp.split('').sort((a,b) => a-b)
}

이미 temp가["a", "b", "c",...] 이렇게 되어있는데 split을 한번 더 썼다ㅋㅋㅋ

그리고 빈 문자열은 배열에 넣지않는다!!

 

만약 문자열의 마지막이 x로 끝난다면 빈 문자열이 배열에 들어간다.

let myString = "axbxcxdx"	
myString.split("x") // ["a", "b", "c", "d", ""]

 

그래서 split 하고난 다음 마지막 요소가 "" 라면 pop() 으로 제거해준다.

그리고 사전순으로 정렬이니까 모든 문자열까지 비교할 필요없이 sort()만 해줬다.

 

수정한 두번째 답

function solution(myString) {
    const temp = myString.split('x')
    if(temp[temp.length-1] === ""){
        temp.pop()
    }
    return temp.sort()
}

는 중간에 빈 문자열이 요소로 들어갈 경우 제거를 안해줬다. 중간에 xx이렇게 연속으로 들어갈 경우...

 

수정한 세번째 답

function solution(myString) {
    const temp = myString.split('x')
    return temp.filter((item)=> item.length > 0).sort()
}

 

 

문제5

첫번째 시도

function solution(board, k) {
    var answer = 0;
        for(let i=0; i <board.length; i++){
            for(let j=0; j<board.length; j++){
                if(i+j <= k){
                    answer += board[i][j]
                }
            }
        }
    return answer;
}

테스트 케이스만 통과하고 제출했을때 테스트 케이스에선 거의다 틀렸다ㅋㅋㅋ

왜일까....

 * 이중 루프문의 조건이 잘못 되었다.

  j < board.length 조건이 문제  ...!!!

board가 2차원 정수 배열 인것을 유의해야한다.

i의 조건으로 준 board.length  은 행의 수 이고 각 행의 열의 개수는 board[i].length로 따로 체크해야한다...

어쩐지...ㅠ 입출력 예시로 각 인덱스 길이가 다르더라...

 

두번째 수정 답안

function solution(board, k) {
    var answer = 0;
        for(let i=0; i <board.length; i++){
            for(let j=0; j<board[i].length; j++){
                if(i+j <= k){
                    answer += board[i][j]
                }
            }
        }
    return answer;
}

역시... 문제를 많이 풀어서 체득화하는게 답인가보다ㅠ

 

 

728x90

'JS 코테' 카테고리의 다른 글

<Javascript-CT> 기초 DAY 26  (0) 2025.05.12
<Javascript-CT> 기초 DAY 25  (0) 2025.05.12
<Javascript-CT> 기초 DAY 22  (0) 2025.05.11
<Javascript-CT> 기초 DAY 21  (0) 2025.05.09
<Javascript-CT> 기초 DAY 19  (0) 2025.05.08