[알고리즘] 프로그래머스_코딩테스트 입문_2023.3.9

신재욱·2023년 3월 9일
0
post-thumbnail

0️⃣ 합성수 찾기


  • 풀이 (오답)
function solution(n) {
let answer = 0;

let a = []

for(let i=4; i<=n; i++ ){
  if(i%2===0 || i%3===0 ){
      a.push(i)
  }
}

answer = a.length
return answer
}


그러나...오답!!

  • 다른 풀이
function solution(n) {
    let arr = new Set();
    for(let i = 1; i <= n; i++){
        for(let j = 2; j < i; j++){
            if(i % j === 0)
                arr.add(i);
        }
    }
    return arr.size;
}


사실 이해가 되진 않는다..
  • 다른 풀이 (광기)
function solution(n) {
    if (n === 1) return 0;
    if (n === 2) return 0;
    if (n === 3) return 0;
    if (n === 4) return 1;
    if (n === 5) return 1;
    if (n === 6) return 2;
    if (n === 7) return 2;
    if (n === 8) return 3;
    if (n === 9) return 4;
    if (n === 10) return 5;
    if (n === 11) return 5;
    if (n === 12) return 6;
    if (n === 13) return 6;
    if (n === 14) return 7;
    if (n === 15) return 8;
    if (n === 16) return 9;
    if (n === 17) return 9;
    if (n === 18) return 10;
    if (n === 19) return 10;
    if (n === 20) return 11;
    if (n === 21) return 12;
    if (n === 22) return 13;
    if (n === 23) return 13;
    if (n === 24) return 14;
    if (n === 25) return 15;
    if (n === 26) return 16;
    if (n === 27) return 17;
    if (n === 28) return 18;
    if (n === 29) return 18;
    if (n === 30) return 19;
    if (n === 31) return 19;
    if (n === 32) return 20;
    if (n === 33) return 21;
    if (n === 34) return 22;
    if (n === 35) return 23;
    if (n === 36) return 24;
    if (n === 37) return 24;
    if (n === 38) return 25;
    if (n === 39) return 26;
    if (n === 40) return 27;
    if (n === 41) return 27;
    if (n === 42) return 28;
    if (n === 43) return 28;
    if (n === 44) return 29;
    if (n === 45) return 30;
    if (n === 46) return 31;
    if (n === 47) return 31;
    if (n === 48) return 32;
    if (n === 49) return 33;
    if (n === 50) return 34;
    if (n === 51) return 35;
    if (n === 52) return 36;
    if (n === 53) return 36;
    if (n === 54) return 37;
    if (n === 55) return 38;
    if (n === 56) return 39;
    if (n === 57) return 40;
    if (n === 58) return 41;
    if (n === 59) return 41;
    if (n === 60) return 42;
    if (n === 61) return 42;
    if (n === 62) return 43;
    if (n === 63) return 44;
    if (n === 64) return 45;
    if (n === 65) return 46;
    if (n === 66) return 47;
    if (n === 67) return 47;
    if (n === 68) return 48;
    if (n === 69) return 49;
    if (n === 70) return 50;
    if (n === 71) return 50;
    if (n === 72) return 51;
    if (n === 73) return 51;
    if (n === 74) return 52;
    if (n === 75) return 53;
    if (n === 76) return 54;
    if (n === 77) return 55;
    if (n === 78) return 56;
    if (n === 79) return 56;
    if (n === 80) return 57;
    if (n === 81) return 58;
    if (n === 82) return 59;
    if (n === 83) return 59;
    if (n === 84) return 60;
    if (n === 85) return 61;
    if (n === 86) return 62;
    if (n === 87) return 63;
    if (n === 88) return 64;
    if (n === 89) return 64;
    if (n === 90) return 65;
    if (n === 91) return 66;
    if (n === 92) return 67;
    if (n === 93) return 68;
    if (n === 94) return 69;
    if (n === 95) return 70;
    if (n === 96) return 71;
    if (n === 97) return 71;
    if (n === 98) return 72;
    if (n === 99) return 73;
    if (n === 100) return 74;
    return undefined;
}

0️⃣ 중복된 문자 제거


  • 풀이
function solution(my_string) {
	my_string.split('')
	let answer = new Set(my_string)
	return [...answer].join('') 
}


중복 값 찾기 위해 반복문을 겹쳐서 시도도 해보았지만, 
도저히 찾지 못해 분명 중복을 없애주는 메서드가 있을 거야 하며 
구글링을 한 결과 new set을 발견!!

📌 new Set

[ 'p', 'e', 'o', 'p', 'l', 'e' ] 
// 이 배열에 new Set을 하면

Set(4) {
  'p',
  'e',
  'o',
  'l',
  __proto__: {}
  }
  // 중복 값을 제거하고 이런 모양이 된다....흥미롭군

0️⃣ 모스부호 (1)


  • 풀이
function solution(letter) {
   let answer = []
let mos = [".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."]
let letterArr = letter.split(' ')

for(let i=0; i<letterArr.length; i++){
  if(mos[0]===letterArr[i]){
    answer.push("a")
  }else if(mos[1]===letterArr[i]){
    answer.push("b")
  }else if(mos[2]===letterArr[i]){
    answer.push("c")
  }else if(mos[3]===letterArr[i]){
    answer.push("d")
  }else if(mos[4]===letterArr[i]){
    answer.push("e")
  }else if(mos[5]===letterArr[i]){
    answer.push("f")
  }else if(mos[6]===letterArr[i]){
    answer.push("g")
  }else if(mos[7]===letterArr[i]){
    answer.push("h")
  }else if(mos[8]===letterArr[i]){
    answer.push("i")
  }else if(mos[9]===letterArr[i]){
    answer.push("j")
  }else if(mos[10]===letterArr[i]){
    answer.push("k")
  }else if(mos[11]===letterArr[i]){
    answer.push("l")
  }else if(mos[12]===letterArr[i]){
    answer.push("m")
  }else if(mos[13]===letterArr[i]){
    answer.push("n")
  }else if(mos[14]===letterArr[i]){
    answer.push("o")
  }else if(mos[15]===letterArr[i]){
    answer.push("p")
  }else if(mos[16]===letterArr[i]){
    answer.push("q")
  }else if(mos[17]===letterArr[i]){
    answer.push("r")
  }else if(mos[18]===letterArr[i]){
    answer.push("s")
  }else if(mos[19]===letterArr[i]){
    answer.push("t")
  }else if(mos[20]===letterArr[i]){
    answer.push("u")
  }else if(mos[21]===letterArr[i]){
    answer.push("v")
  }else if(mos[22]===letterArr[i]){
    answer.push("w")
  }else if(mos[23]===letterArr[i]){
    answer.push("x")
  }else if(mos[24]===letterArr[i]){
    answer.push("y")
  }else if(mos[25]===letterArr[i]){
    answer.push("z")
  }
}

return answer.join('')

}
  • 다른 풀이
function solution(letter) {
    let morse = { 
        '.-':'a','-...':'b','-.-.':'c','-..':'d','.':'e','..-.':'f',
        '--.':'g','....':'h','..':'i','.---':'j','-.-':'k','.-..':'l',
        '--':'m','-.':'n','---':'o','.--.':'p','--.-':'q','.-.':'r',
        '...':'s','-':'t','..-':'u','...-':'v','.--':'w','-..-':'x',
        '-.--':'y','--..':'z'
    };
    return letter.split(' ').map(v=>morse[v]).join('');
}


열받는다..

📌 '.-':'a =

'.-' : 'a = '.-' 이면 'a'이다 if( 조건문)을 사용

📌 map

map을 통해 반복문 역할 수행하며 map(v=>morse[v]) morse 배열을 각각돌며 조건문을 발동시켰다.

0️⃣ A로 B 만들기


  • 풀이
function solution(before, after) {
   
let answer = 0;

let beforeAnswer = before.split('')
let strinBefore = beforeAnswer.sort().join('')
console.log(strinBefore)

let afterAnswer = after.split('')
let stringAfter = afterAnswer.sort().join('')
console.log(stringAfter)

if(strinBefore===stringAfter){
  answer = 1;
}else{
    answer = 0;
}
    return answer
}


코드가 길다고 과연 나쁜걸까요?ㅋㅋㅋㅋ
우선 before값과 after값으로 받은 문자열을 배열로 나누고
나눈 배열을 오름차순으로 정렬합니다.
그리고 각각의 배열을 비교해서 같으면 1을 다르면 0을 출력
아 얼마나 직관적인가...
  • 다른 풀이
function solution(before, after) {
    return before.split('').sort().join('') === after.split('').sort().join('') ? 1 : 0;
}


열받는다.^^
profile
1년차 프론트엔드 개발자

0개의 댓글