코딩테스트 정리

Yoon Whimyong·2024년 11월 27일

2024년 11월 27일 첫 코딩테스트 시작 0 lv

1) 문자열 출력하기

const readline = require('readline');
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

let input = [];

rl.on('line', function (line) {
  //input = [line]; 
  	input.push(line); // 입력된 줄을 배열에 추가합니다.
}).on('close',function(){
  //str = input[0];
    const str = input[0]; // 입력된 문자열을 첫 번째 요소로 설정
  	console.log(str); // 문자열을 출력합니다.
});

코드해석

  • readline 모듈을 사용하여 입력처리
  • input 배열에 입력된 문자열을 저장 ('push' Array method 활용)
  • const 변수를 상수화 하는 키워드 안정성을 높이고 의도파악이 가능
  • console.log(str); 입력한 문자열 출력

2) a, b 출력하기

const readline = require('readline');
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

let input = [];

rl.on('line', function (line) {
    //input = line.split(' ');
  	input = line.split(' '); // 입력된 줄을 공백으로 나눕니다.
  
}).on('close', function () {
    console.log("a = "+ Number(input[0])); 현재 상태에서 이해할수 있는구문
    console.log("b = "+ Number(input[1]));
});

코드해석

- console.log("a = "+ Number(input[0]));
- console.log("b = "+ Number(input[1]));
각각의 출력문을 준비 문자열과 "a = ", "b = " 
input배열에 입력받은  0번 인덱스와 1번인덱스를 입력 
Number을 사용하여 형변환이 되도록 했다
Number을 입력하지 않아도 자동 형변환이 된다. 
- 문제로 출시된 변수명 앞에 conset과 var 과 같은 입력어를 입력하지 않아도 
되지만 항상 입력 하려는 습관을 들여야 한다
-let : JS에서 블록 범위 변수를 선언하는 키워드 
	var와 달리 범위가 제한된 변수를 생성할 수 있게 해준다

3) 문자열 반복출력

const readline = require('readline');
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

let input = [];

rl.on('line', function (line) {
    input = line.split(' ');
}).on('close', function () {
    str = input[0];
    n = Number(input[1]);
  
  	let result = ''; // 결과 문자열 초기화
    for (let i = 0; i < n; i++) {
        result += str; // 문자열을 n번 반복하여 추가
    }
 	
  	let i = 0;
  	while (i < n) {
        result += str; // 문자열을 n번 반복하여 추가
        i++; // 반복 변수 증가
    }
    console.log(result); // 결과 출력
});

코드해석

- let 변수설정은 var과 다르게 범위를 지정할수 있는 방식이다 기억하자
- input = line.split(' '); 입력된 줄을 공백으로 나눈다(split)
★ 기타 풀이 
1) for of
let result = ''; // 결과 문자열 초기화
for (const str of Array(n)) { // n번 반복하기 위해 Array(n) 사용
        result += str; // 문자열을 추가
    }

2) forEach
let result = ''; // 결과 문자열 초기화
Array(n).fill().forEach(() => { // 길이가 n인 배열을 생성하고 각 요소에 대해 반복
        result += str; // 문자열을 추가
    });   
/*
fill() 배열의 모든 요소를 지정한 값으로 변경하고 수정된 배열을 반환
인덱스 범위를 지정하여 그 구간만 변경 가능.
*/

3) for 기본문
let result = ''; // 결과 문자열 초기화
for (let i = 0; i < n; i++) {
        result += str; // 문자열을 n번 반복하여 추가
    }

4) while
let i = 0;
while (i < n) {
      result += str; // 문자열을 n번 반복하여 추가
      i++; // 반복 변수 증가
    }

5)repeat() : //JavaScript의 String 객체에 속하는 메서드 
//문자열을 지정한 횟수만큼 반복하여 새로운 문자열을 생성. 
//ES6(ECMAScript 2015) 방식.
console.log(str.repeat(n)); 배워보지 못한 repeat

4) 대소문자 바꿔 출력하기

const readline = require('readline');
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

let input = [];

rl.on('line', function (line) {
    input = [line];
}).on('close',function(){
   const str = input[0];  	 //상수로서 변수 생성
   let upStr = '';      	 //결과 문자열 초기화를 해준다
   
   for(const char of str){ 	//of기준 문자배열과 저장할 변수(상수화)를 지정
     if(const char == char.toUpperCase()){
       upStr += char.toLowerCase();//대문자를 소문자로
     }else {
       upStr += char.toUpperCase();//소문자를 대문자로
        }
    }
    console.log(upStr);
});

코드해석

let input = [];  : 범위가 있는 변수(let) 활용 var가능
rl.on('line', function (line) {...}) : rl은 readline 인터페이스의 인스턴스입니다.
.on('line', ...) : 텍스트 한줄을 입력할때 호출되는 이벤트 리스너를 설정
이벤트 리스너 : 사용자의 행동(예: 클릭, 키 입력, 마우스 이동 등)    
line : (매개변수) 입력한 한 줄의 문자열

○ 작동 방식 
1) 입력완료시 함수 호출
2) 입력된 문자열 line를 배열로 감싸 input 변수에 저장
ex) "hello" 입력 input은 ["hello"]

.on('close', function () {...}):
.on('close', ...)는 readline 인터페이스가 종료시 호출 이벤트 리스너 설정
입력이 종료된 후 작업을 정의 
ex) 최종 결과를 출력 리소스를 정리 등의 작업 수행.

5). 특수문자 출력하기

/*
문제 설명 - 다음과 같이 출력하도록 코드를 작성해 주세요.
출력 예시 - !@#$%^&*(\'"<>?:;
*/

const readline = require('readline');
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});
rl.on('close', function () {
 
    console.log(`!@#$%^&*(\\'"<>?:;`);
  //와 진짜.. 이것저것 다해봤다..
  
});

코드풀이

  • 특수문자 처리를위해 역슬래쉬\를 다시금 추가해서 출력이 가능하게 했다

복습(코드정리)

  • readline 모듈을 사용하여 입력처리 (입력을 처리하는 모듈)
  • rl.on('line', function (line) {...}) : rl은 readline 인터페이스의 인스턴스입니다.
  • .on('line', ...) : 텍스트 한줄을 입력할때 호출되는 이벤트 리스너를 설정
  • 이벤트 리스너 : 사용자의 행동(예: 클릭, 키 입력, 마우스 이동 등)
  • 'line' : (매개변수) 입력한 한 줄의 문자열
  • .on('close', ...) : readline 인터페이스 종료시 호출 이벤트 리스너 설정 입력이 종료된 후 작업을 정의
  • input 배열에 입력된 문자열을 저장 ('push' Array method 활용)
  • const : 변수를 상수화 하는 키워드 안정성을 높이고 의도파악이 가능
  • let : JS에서 블록 범위 변수를 선언하는 키워드
  • var : 와 달리 범위가 제한된 변수를 생성할 수 있게 해준다
  • console.log("a = "+ Number(input[0])) 자동형변환 가능 명시해주는것이 좋다
  • let result = ''; // 결과 문자열 초기화 하는 방법 변수에 ' '," "을사용하여 초기화 가능
  • fill() : 배열의 모든 요소를 지정한 값으로 변경 수정된 배열을 반환
    (인덱스 범위의 지정 구간만 변경 가능)
  • repeat() : JavaScript의 String 객체에 속하는 메서드
    문자열을 지정한 횟수만큼 반복하여 새로운 문자열을 생성.
  • `!@#$%^&*(\'"<>?:;

2024년 11월 28일 2D

1). 문자열 붙이기

두개의 문자열 str1, str2가 공백으로 구분 되어 입력된다
입력1 apple pen 출력1 applepen
입력2 Hello World! 출력2 HwlloWorkd!

const readline = require('readline');
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});
let input = [];
rl.on('line', function (line) {
    input = line.split(' ');
}).on('close', function () {
    str1 = input[0].split(' ').join("");
    str2 = input[1].split(' ').join("");

    console.log(str1+str2);
});

코드풀이(이해초과설명필요)

input 변수에 배열형태로[]
str1 첫번째 입력값 0번인덱스
str2 두번째 입력값 1번인덱스

  • .split(' ') 입력받은 문자열 공백을 기준으로 각각따로 배열화
  • .join("") 배열을 이어주는 속성
  • console.log(str1+str2); 문자열을 이어(+) 출력하는 출력문
    기타풀이방법
1)const strArr = line.split(' ')
    console.log(strArr.join(''))

2)rl.on('line', function (line) {
  input = line.split(' ');   //입력값이 line에 저장되고 이를 공백기준으로 각 배열저장
}).on('close', function () {
  console.log(input.join('')); //저장된 배열들은 합쳐 출력
});

2). 덧셈식 출력

const readline = require('readline');
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});
let input = [];
rl.on('line', function (line) {
    input = line.split(' ');
}).on('close', function () {
    //console.log(Number(input[0]) + Number(input[1]));
  	console.log(`${Number(input[0])} 
				+ ${Number(input[1])} 
				= ${Number(input[0])+Number(input[1])} `);
});

코드풀이

  • ${}로 각각의 식에 맞는 부분을 묶어서 출력결과과 출력값이 나오도록했다
  • 좀도 가독석을 높이는 방법들이 있어서 추가로 작성
    기타풀이
0)
    console.log(Number(input[0]),
                '+',
                Number(input[1]) ,
                '=',
                Number(input[0]) + Number(input[1]));
});
//입력값과 연결하고자 하는 연산기호를 ','로 구문하여 차례로 작성
0_1)
   console.log(a, '+', b, '=', Number(a) + Number(b))
//변수에 저장하고 했을경우 (가독성up)
1)
	const [a, b] = line.split(' ')
    console.log(a, '+', b, '=', Number(a) + Number(b))
//입력값을 변수에 초기화 하고(가독성up) 변수값으로 출력문을 작성 
1_1)
	const a = Number(input[0]);
    const b = Number(input[1]);
    console.log(`${a} + ${b} = ${a+b}`)
//마찬가지 입력값을 상수 변수로 초기화 하고 변수명으로 출력문 작성


2)
rl.on('line', function (line) {
    [a, b] = line.split(' ').map(Number);
}).on('close', function () {
    console.log(`${a} + ${b} = ${a + b}`);
});
//생성자 함수 Number를 map()의 콜백함수로 사용 이해를 위한 공부가 필요

3). 문자열 돌리기

const readline = require('readline');
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});
let input = [];
rl.on('line', function (line) {
    input = [line];
}).on('close',function(){
    str = input[0];
    str1 = str.split(''); //입력받은 문자열을 문자단위로 배열에 저장
    str1.map((element, index) =>{
        console.log(element);
    });
	//map 속성을 이용하여 아이템 값을 차례로 출력;
});

코드풀이

  • .split() : 정말 계속 도움받는 속성 ''문자단위로 배열 저장을 하기 위해 사용
  • .map : 배열안의 내가 원하는 요소로 변환 시켜 반환
    arr.map(function(element, index){ 변환시키고자 하는 값을 작성 });
    기타풀이
1)
	[...str].forEach(c => console.log(c))
// [...str]는 스프레드 연산자를 사용하여 문자열 str을 배열로 변환
// c => console.log(c)라는 화살표 함수를 사용하여 각 문자 출력
//스프레드 연산자(Spread Operator) : 
2)
  for(let i of str){ console.log(i) }
// for of 문 사용 수업내용에서 배웠는데 아직도 어떤 방식인지 이해가 부족
3) 
	console.log(input.join('\n'));
//맨 처음 찾아던 방법 개행을 하는 문자를 사용할수 있는듯하다. 
4)
	for(let i = 0 ; i < str.length; i++) console.log(str[i])
//반복문 열심이 찾아서 기억해서 해봤는데 출력값이 잘못됬다고 만 나왔다 
//{블록}을 사용하지 않아야 하는건가 .. 한번 고민해보자
5)
	  str = input[0].split('');
    for (let i = 0; i < str.length; i += 1) { console.log(str[i]); }
//기본 반복문 변수에서 미리 문자열을 구분하고 반복문을 만들어야 했던거 같다 실패이유발견

4). 홀짝 구분하기

입력1 100, 입력2 2 = 출력1 100 is even, 출력2 1 is odd

const readline = require('readline');
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

let input = [];

rl.on('line', function (line) {
    input = line.split(' ');
}).on('close', function () {
    n = Number(input[0]);
  	if( n % 2 == 0){ //조건문 조건문 바로 바로 생각이 안나네..복습하자
        console.log(n+" is even");
    }else{
        console.log(n+" is odd");
    }

});

코드풀이

기타풀이

1)
const result = Number(line) % 2 ? 'odd' : 'even'
    console.log(line, 'is', result)
//역시나 배우긴 했다 떠오르지 않고 있다 삼항 연산자를 이용한 비교 대입
// % 2 == 0 을 안해도 되는거겠지?
2)
console.log(n%2===0? `${n} is even`:`${n} is odd`)
//템플릿 방식과 삼항연산자 복합 눈으로 익혀두자
  • ${value} 문자열 템플릿방식? 기역해두고 꼭 사용해보자

5). 문자열 겹쳐쓰기

// 문자열 my_string, overwrite_string과 정수 s
// 문자열 my_string의 인덱스 s부터 overwrite_string의 길이만큼을 
// 문자열 overwrite_string으로 바꾼 문자열을 
// return 하는 solution 함수를 작성해 주세요.

// 문제를 보고 무슨말인지 이해를 못하는경우가 너무 많다.. 익숙해지자.

function solution(my_string, overwrite_string, s) {
	 const answer = my_string.split('');
  	 answer.splice(s, overwrite_string.length, overwrite_string);
   	 return answer.join('');	
}

//참 문제를 이해하는게 너무 오래 걸린다.. 문제에서 말하고자 하는것이 무엇인지 파악하는데 참... 문제글도 많이 봐야 겠다.

코드풀이

  • slice(시작인덱스, 끝인덱스)
    시작index에서 끝index의 "전"까지 요소를 가저와 새로운 배열로 반환
  • splice(시작인덱스, 삭제개수, 추가요소...) : 요소를 추가&제거
    - 시작인덱스부터 삭제할 개수만큼 요소를 제거,
    - 시작인덱스에 추가할 요소들을 추가.
  • .substring(0, s) 0 -> 시작인덱스 s-> 끝index"전" 적지 않으면 문자열 끝까지
    기타풀이
1)
 return my_string.slice(0,s)+
          	  	  overwrite_string+
          	   	  my_string.slice(s+overwrite_string.length);
2)
 return my_string.substring(0, s) + 
   		overwrite_string + 
   		my_string.substring(s + overwrite_string.length);

복습(코드정리)

  • split(' ') 입력받은 문자열 공백을 기준으로 각각따로 배열화
  • join("") 배열을 이어주는 속성
  • console.log(str1+str2); 문자열을 이어(+) 출력하는 출력문
  • ${}로 각각의 식에 맞는 부분을 묶어서 문자열과 출력값이 출력 (템플릿)
  • map() : 배열안의 데이터를 내가 원하는 요소로 변환 시켜 반환
    arr.map(function(element, index){ 변환시키고자 하는 값을 작성 }
  • [...str] : 는 스프레드 연산자를 사용하여 문자열 str을 배열로 변환
  • for of : 배열 반복시 for of문을 사용 for( 변수명 of 반복을할배열 )
  • const result = Number(line) % 2 ? 'odd' : 'even' 삼항연산자사용 로직을 기억하자
  • slice(시작인덱스, 끝인덱스) : 시작index에서 끝index의 "전"까지 요소를 가저와 새로운 배열로 반환
  • splice(시작인덱스, 삭제개수, 추가요소...) : 요소를 추가&제거
  • substring(0, s) 0 -> 시작인덱스 s-> 끝index"전" 적지 않으면 문자열 끝까지

20241129 3day

1). 문자열 섞기

//입출력 
//str1 : "aaaaa" | str2 : "bbbbb" | result : "abababababab"
function solution(str1, str2) {
    var answer = '';
  	   for(var i = 0; i<str1.length; i++){
        answer += str1[i];
        answer += str2[i];
        // answer += str1[i]+str2[i]  위방법과의 동일점을 이해해 보자
    }
  	return answer;
}

코드풀이

  • for(let i = 0; i<str1.length; i++) str1의 문자열의 길이만큼 반복
  • answer += str1[i];

기타풀이

1)
return [...str1].map((x, idx)=> x+str2[idx]).join("");
//map이용 공부 필요
2) 
return [...str1].reduce((prev, char, i) => prev + char + str2[i], '');
// reduce() 찾아보자 
3) 
   for(let i =0, j = 0;i<str1.length, j<str2.length;i++,j++){
        answer += str1[i];
        answer += str2[j];
    }
// 조건을 두개 작성이 가능했던가 확인해보자
4) 
	//var result = '' string(문자열)타입으로 받았을 경우
	 var result =[]  // array(배열)타입으로 입력받았을경우 
	for(i=0; i<str1.length; i++){
        result.push(str1[i] + str2[i]) //['ab','ab','ab','ab','ab',]
    }
    return result.join('')//['ababababab']

2). 문자 리스트 문자열로 변환하기

//arr : ["a","b","c"]  | result : "abc"
function solution(arr) {
    //var answer = '';
    return arr.join("");; //매개변수로 받은 배열 입력값을 join으로 이어주기
}

코드풀이

  • join() : 배열들을 서로 이어주는 속성
  • for of, for 반복문에 익숙해 지자
    기타풀이
1) for of 이용
   var answer = '';
    for(let i of arr){
        answer += i;
    }
    return answer;
//변수를 생성 -> for of 를 이용 배열의 수만큼 반복 -> 반복한 배열을 서로 이어주기
2) for 기본문 이용
  	var answer = '';
    for(var i=0; i<arr.length ; i++){
        answer+=arr[i];
    }
    return answer;

3). 문자열 곱하기

//solution 함수 만들기
//문자열 my_string과 정수 k,
//my_string을 k번 반복한 문자열을 return
//my_string : "string", "love"
// k(반복 할 정수값) : 3, 10
//result값 : "stringstringstring", "lovelovelovelovelovelovelovelovelovelove"
function solution(my_string, k) {
    //var answer = '';
  	//return answer;	
  	return my_string.repeat(k);
}
//repeat() : JS의 String객체에 있는 메서드 문자열을 지정한 횟수만큼 반복하여 새로운 문자열을 생성. 

코드풀이

-repeat() : 문자열을 지정한 횟수 만큼 반복하여 새로운 문자열 생성 매서드

기타풀이

1). for 기본반복문 사용
	for(let i = 0; i<k; i++){
        answer += my_string;
    }

2). 화살표 함수 사용 한줄 코드도 있다한다.
const solution = (my_string, k) => my_string.repeat(k)

4). 더크게 합치기

//양의 정수 a, b  
//a + b와 b + a 중 더 큰 값을 return
//입력값1 a = 9, b = 91
//입력값2 a = 8. b = 8
function solution(a, b) {
    //var answer = 0;
    //return answer;
    var ab = String(a) + String(b)
    var ba = String(b) + String(a)

    return ab >= ba ? Number(ab) : Number(ba)
}

코드풀이

  • return ab >= ba ? Number(ab) : Number(ba) 삼항연사자를 사용해봄
    Number형변환을 해주어야 한다 문자열 값이기 떄문에
  • Math.max(값,값2,값3) : 제시간 값중 가장 큰 수를 반환한다.
    기타풀이
1) Math.max 함수 사용방법
return Math.max(Number(`${a}${b}`), Number(`${b}${a}`))
//보기좋은 템플릿 작성

return Math.max(+(a.toString()+b.toString()),
                +(b.toString()+a.toString()));
//같은 max를 사용했지만 문자 속성을 그래도 불러 오는 방법

5). 두 수의 연산값 비교

function solution(a, b) {
    //var answer = 0;
    //return answer;
    var abm = 2 * String(a) * String(b)
    var ab = String(a) + String(b)
    return Math.max(Number(abm), Number(ab));
} 

코드풀이

  • Math.max() : 함수 바로 이용해보기 입력한 값의 큰값을 반환
  • a{a}{b} : JS 템플릿 리터럴 사용 a와 b를 문자열로 연결
  • toString() : JS에서 객체를 문자열로 변환메서드
    기타풀이
1)모 역시나 변수없이 작성하는 방법
return Math.max( +(a.toString()+b.toString()),2*a*b)
// +() 가로앞에 +는 숫자 값을 반환 하기 위해 사용 
//  +(...) 부분은 단항 덧셈 연산자라고 한다 문자열->숫자값 반환
2) 템플릿 방식 
return Math.max(Number(`${a}${b}`), a * b * 2)

복습(코드정리)

  • join() : 배열들을 서로 이어주는 속성
  • for of, for 반복문~
    -repeat() : 문자열을 지정한 횟수 만큼 반복하여 새로운 문자열 생성 매서드
  • return ab >= ba ? Number(ab) : Number(ba) 삼항연산자
  • Math.max(값,값2,값3) : 제시간 값중 가장 큰 수를 반환한다.
  • Math.max() : 함수 바로 이용해보기 입력한 값의 큰값을 반환
  • a{a}{b} : JS 템플릿 리터럴 사용 a와 b를 문자열로 연결
  • toString() : JS에서 객체를 문자열로 변환메서드

2024년 12월 02일 4D

1). n의 배수

//solution 함수 만들기
// 정수 num과 n이 매개 변수
//num이 n의 배수이면 1을 return 
//n의 배수가 아니라면 0을 return .
function solution(num, n) {
    var answer = 0;
  	if(num % n == 0){ //조건문을 사용하여 리턴값 반환
      return 1;
    }else{
      return 0;
    }
    return answer;
}

코드풀이

  • if 조건문을 사용하여 리턴값 반환
    기타풀이
1)
return num%n===0?1:0;
//삼항연사자를 사용하여 풀이 '===' JS용 비교연산다 자료형 코드까지 비교
2) 화살표 함수 사용
const solution = (num, n) => num % n === 0 ? 1 : 0 

2). 공배수

//solution 함수 만들기
//정수 number , n , m (매개변수)
//number 이 n의 배수이면서 m의 배수이면 1 아니면 0 return 
function solution(number, n, m) {
    var answer = 0;
        if( number%n === 0 && number%m === 0){ //if 조건문 &&연산자 사용
        return 1;
    }
    return answer;
}

코드풀이

  • if 조건문에 && 연사자와 함께 사용
    기타풀이
1) 신기혀...
  return +!(number % n || number % m);
// +()정수로 형변환 하는 방법
2) 삼항연산자
return (number%n ===0) ? (number%m===0) ? 1 : 0 : 0;
return number % n === 0 && number % m === 0 ? 1 : 0

3). 홀짝에 따라 다른 값 반환하기

//solution함수 만들기
//매개변수 n은 양의 정수 
//n이 홀수 일때 n이하의 홀수들의 합 리턴
//n이 짝수 일때 n이하의 짝수들의 제곱의 합 리턴
function solution(n) {
    var answer = 0;
    if(n%2 === 0){				//if 조건문 사용
        for(i=2; i<=n; i+=2){	//안에 for 반복문 사용
            answer+=i*i;
            }
        }else{
            for(i=1; i<=n; i+=2){
                answer+=i;
            }
        }
}

코드풀이

  • if 조건문 으로 홀수와 짝수 값 구분
  • for 반복문으로 홀수 짝수 일때의 결과값
  • for(i=2; i<=n; i+=2) ,for(i=1; i<=n; i+=2)
    각 i의 초기값을 설정 홀수와 짝수를 구분하여 계산할수 있도록
  • Math.pow(i, 2); -> i의 제곱을 계산하는 함수
  • let result = i 2; -> i의 제곱
    기타풀이**
1)수학천재들의 공식 ㄷㄷ;;수열을 이용한다는데 어렵군..
  if(n%2===1)
      return  (n+1)/2*((n + 1)/2) ;
    else
      return   n*(n+1)*(n+2)/6;

4). 조건 문자열

//매개변수로 ineq, eq, n, m 
//ineq 는 < 또는 >
//eq 는 = 또는 ! 
//n, m의 정수 값
function solution(ineq, eq, n, m) {
    var answer = 0;
    if(ineq ==='<' && n<m) return 1;  //조건을 다 만들어 버리자
    if(ineq ==='>' && n>m) return 1;
    if(eq === '=' && n===m) return 1;
    return answer;
}

코드풀이

  • 각 조건에 맞는 식을 전부 작성하자
    기타풀이
1) 객체를 만들어서 활용
const operations = {
  '>=': (n, m) => n >= m,
  '<=': (n, m) => n <= m,
  '>!': (n, m) => n > m,
  '<!': (n, m) => n < m,
};
function solution(ineq, eq, n, m) {
  const op = operations[ineq + eq];
  return Number(op(n, m));
}
//operations[ineq + eq]: 키값를 이용하여 operations객체의 함수를 사용

5). flag에 따라 다른 값 반환하기

//매개변수 a, b, flag(boolean변수)
//flag 가 true 면 a+b, false 면 a-b
function solution(a, b, flag) {
    var answer = 0;
  	if(flag===true){ return a+b;}
  	else{ return a-b; }
    return answer;
}

코드풀이

  • if 조건문 활용
    기타풀이
1) 오 간단해 
 return (flag)? a+b : a-b;
2)이해 될듯 말듯
const solution = (a, b, flag) => flag ? a + b : a - b
3)
var answer = flag === true ? a + b : a - b;
//비슷한 풀이 다양한 방법

복습(코드정리)

  • return (flag)? a+b : a-b; 삼항 연산 방식 알듯 말듯해 항상
  • for(i=2; i<=n; i+=2) ,for(i=1; i<=n; i+=2)
    각 i의 초기값을 설정 홀수와 짝수를 구분하여 계산할수 있도록
  • Math.pow(i, 2); -> i의 제곱을 계산하는 함수
  • let result = i ** 2; -> i의 제곱
  • return +!(number % n || number % m); -> +()정수로 형변환 하는 방법
  • const solution = (num, n) => num % n === 0 ? 1 : 0
  • const solution = (a, b, flag) => flag ? a + b : a - b
  • 화살표 함수 사용법 좀더 봐야해 아직도 어리버리

2024년 12월 04일 5day

1). 코드 처리하기

//문자열 codemode를 정의한다
//mode가 0일때와 1일때로 나누어 조건문을 실행
//문자열에 1 포함 여부에 따라 삼항연산자를 통해 mode를 바꾸거나 ret에 문자를 추가
//ret에 문자를 추가할 때는 index가 짝수/홀수인지에 따라 해당할 때만 실행되도록 한다
//ret의 length가 0보다 작거나 같을 경우"EMPTY"를 출력하도록 한다
function solution(code) {
    var answer = '';
    let mode = 0;
for (let i = 0; i < code.length; i += 1) {
  if (Number(code[i]) === 1) {
    mode = mode === 1 ? 0 : 1;
  }
  if (Number(code[i]) !== 1 && i % 2 === mode) {
    answer += code[i];
  }
}
return answer.length > 0 ? answer : 'EMPTY';

}

#### 코드풀이

**기타풀이**
```js
1)
var answer = code.replaceAll("1","")
			.split("")
			.filter((val, idx)=> idx%2 === 0).join("");
    return answer.length > 0 ? answer : "EMPTY";
2)


0개의 댓글