본문 바로가기

JS 코테

<Javascript-CT> 기초 DAY 13

 

문제1
	boolean 변수 x1, x2, x3, x4가 매개변수로 주어질 때, 
    다음의 식의 true/false를 return 하는 solution 함수를 작성해 주세요.
    
    입출력 예
    x1	x2	x3	x4	result
    false	true	true	true	true
    true	false	false	false	false
    
    ∨과 ∧의 진리표는 다음과 같습니다.
    x	y	x ∨ y	x ∧ y
    T	T	T	  T
    T	F	T	  F
    F	T	T	  F
    F	F	F

문제2
	1부터 6까지 숫자가 적힌 주사위가 네 개 있습니다. 네 주사위를 굴렸을 때 나온 숫자에 따라 다음과 같은 점수를 얻습니다.
    네 주사위에서 나온 숫자가 모두 p로 같다면 1111 × p점을 얻습니다.
    세 주사위에서 나온 숫자가 p로 같고 나머지 다른 주사위에서 나온 숫자가 q(p ≠ q)라면 (10 × p + q)2 점을 얻습니다.
    주사위가 두 개씩 같은 값이 나오고, 나온 숫자를 각각 p, q(p ≠ q)라고 한다면 (p + q) × |p - q|점을 얻습니다.
    어느 두 주사위에서 나온 숫자가 p로 같고 나머지 두 주사위에서 나온 숫자가 각각 p와 다른 q, r(q ≠ r)이라면 q × r점을 얻습니다.
    네 주사위에 적힌 숫자가 모두 다르다면 나온 숫자 중 가장 작은 숫자 만큼의 점수를 얻습니다.
    네 주사위를 굴렸을 때 나온 숫자가 정수 매개변수 a, b, c, d로 주어질 때, 얻는 점수를 return 하는 solution 함수를 작성해 주세요.

문제3
	문자열 my_string과 정수 배열 index_list가 매개변수로 주어집니다. 
    my_string의 index_list의 원소들에 해당하는 인덱스의 글자들을 
    순서대로 이어 붙인 문자열을 return 하는 solution 함수를 작성해 주세요.

문제4
	음이 아닌 정수를 9로 나눈 나머지는 그 정수의 각 자리 숫자의 합을 9로 나눈 나머지와 같은 것이 알려져 있습니다.
    이 사실을 이용하여 음이 아닌 정수가 문자열 number로 주어질 때, 
    이 정수를 9로 나눈 나머지를 return 하는 solution 함수를 작성해주세요.
    
문제5
	문자열 my_string과 이차원 정수 배열 queries가 매개변수로 주어집니다. 
    queries의 원소는 [s, e] 형태로, my_string의 인덱스 s부터 인덱스 e까지를 뒤집으라는 의미입니다. 
    my_string에 queries의 명령을 순서대로 처리한 후의 문자열을 return 하는 solution 함수를 작성해 주세요.
    
    입출력 예
    my_string	queries	result
    "rermgorpsam"	[[2, 3], [0, 7], [5, 9], [6, 10]]	"programmers"

 

 

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

- Array.reverse()

배열의 순서를 반전하는 메소드이다.

 

 

내 답안지

문제 1

function solution(x1, x2, x3, x4) {
   const result = (x1 || x2) && (x3 || x4)
   return result
}

뭔 소린가 했는데 진리표까지 보고나서 or, and 연산자라는걸 알아챘다.

문제를 잘 읽자!

 

 

문제2

무엇들을 고려해야할지 부터 생각해야 한다.

나는 일단 1. 주사위의 결과들을 배열에 담고 비교하려고 생각했다.

2. every로 모두 같은 경우를 검사

3. count를 두고 같은 수가 있는지 확인

4. 그런데 어떤 수가 여러개인지 확인을 어떻게 할지.... 에서 막혔다ㅜㅠ

 

첫 시도

function solution(a, b, c, d) {
  let result = 0;
  let count = 0;
  let tempArr = [];
  const arr = [a, b, c, d];
  // 모두 같은 수라면
  if (arr.every((val) => val === a)) {
    result = 1111 * a;
  }

  
}
// value와 같은 값을 가진 인덱스 반환
function findIndex(arr, value) {
  return arr
    .map((item, index) => (item === value ? index : -1))
    .filter((index) => index !== -1);
}

 

 

문제3

 

function solution(my_string, index_list) {

    const str = my_string.split('')
    const result = index_list.map(index => str[index]).join('');
    
    return result
}

 

 

문제 4

 

function solution(number) {
    const temp = number.split('')
    const sum = temp.reduce((acc, cur) => Number(acc)+Number(cur))
    
    return sum%9
}

 

 

문제 5

내 첫 시도

function solution(my_string, queries) {
    let str = my_string.split('')
    let temp1 = []
    let temp2 = []
    let temp3 =[]
    for(let i=0; i <queries.length; i ++){
        const query = queries[i]
        const [s,e] = query
         temp1 = str.slice(0, s)
         temp2 = str.slice(s, e+1).reverse()
         temp3 = str.slice(e+1, str.length)
        
        str = temp1 + temp2 +temp3
    }
    let result = str.join('')
        //temp1.join('') + temp2.join('') + temp3.join('')
    
    return result
}

ㅇ.... 그런데 for 문 안에서 기존 문자열을 덮어씌우지 않고 있기 때문에 틀린 답이 되었다zzz

 

수정 후 답안

function solution(my_string, queries) {
    let str = my_string.split('')
    let temp1 = []
    let temp2 = []
    let temp3 =[]
    for(let i=0; i <queries.length; i ++){
        const query = queries[i]
        const [s,e] = query
        temp1 = str.slice(0, s)
         temp2 = str.slice(s, e+1).reverse()
         temp3 = str.slice(e+1, str.length)
        
        str = [...temp1, ...temp2, ...temp3]
        
    }

    return  str.join('')
}
728x90

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

<Javascript-CT> 기초 DAY 14  (0) 2025.05.04
<Javascript-CT> 기초 DAY 12  (0) 2025.04.28
<Javascript-CT> 기초 DAY 11  (0) 2025.04.28
<Javascript-CT> 기초 DAY 10  (0) 2025.04.28
<Javascript-CT> 기초 DAY 9  (0) 2025.04.27