[프로그래머스]Algorithm 연습_23.03.20

윤성해·2023년 3월 20일
0

알고리즘

목록 보기
5/22
post-thumbnail

2023.03.20 6일차 알고리즘 문제 연습하기

💡배운 것

  • 홀, 짝 문제 풀 때 & if, else 구문은 삼항연산자로 풀 수 있다.
  • slice, padString, substring -> 다시 복습하기

같은 숫자는 싫어

문제 요약 ➡️ 배열 arr에 있는 숫자 겹치는거 순서대로 반환하되, 겹치는 거 있으면 빼주기

나의 풀이

function solution(arr) {
    let arr = "" //빈배열 arr 
    for (let i = 0; i < arr; i++){ //반복하며 돌다가
        if (i !== i+1) { //i랑 i + 1 되는 값이 다르면
            //삭제해줘라
        }
    }

    var answer = [];
    >
    return answer;
}

문제 풀이


짝수, 홀수 구하기

문제

나의 풀이
(소요시간 1분)

function solution(num) {
    let answer = ''; // 빈 배열을 만들고
    if(num % 2 === 0){ // 만약 num의 나머지값이 2와 같다면 = 짝수라면 
        return "Even" // "Even" 내놔!
    } else if (num % 2 !== 0){ // num의 나머지값이 2와 다르다면 = 홀수라면 
        return "Odd" // "Odd" 내놔
    }
    return answer;
}

다른 풀이

  • else if 안쓰고 그냥 else 써도 가능
  • 홀수값 먼저 써주면 에러날 수 있음. 정확히 모르지만.. 0은 짝수라는 제한조건 때문?
  • (num % 2 === 0) -> if(!(num%2)) 라고 써줄 수 있다.
    0 이 거짓값이니까 트루시하게 바꿔주는 것. 넘 밖에 괄호 안쓰면 num을 ! 하는것. 우리는 전체의 값을 ! 할거니까!!! () 써주어야 한다.
  • 홀수 조건 쓸 때 (num % 2 === 1) 이라고 쓸 수도 있다!
  • 삼항연산자를 사용해서 코드 리팩토링 하기
    function solution(num) {
        // var answer = '';
        return num % 2 === 0 ? "Even" : "Odd" 
    }

핸드폰 번호 가리기

문제

나의 풀이
(소요시간 - 시간 내 못품)

function solution(phone_number) {
    const answer = ''; //값을 담을 빈 배열을 만들어주었다.
  const hideNumber = "****" //무조건 4개만 * 붙이면 되니까 * 네개 만들어주었다.
   for(let i = 0; i <=phone_number.length; i++){ //반복해서
     answer = phone_number.substring(0,-4) + hideNumber  //나온 폰넘버의 길이에 -4를 해주어 뒤에서 4개 자르고 * 4개 붙임
   }
    return solution
}

다른 풀이
문제를 헷갈렸음.. 반대로 생각했다.
원래 문제의 의도는 앞에를 * 로 가리고 뒤에 4글자를 가리는 것이었음.

❗️먼저, type of 를 활용해서 문자열인지 확인해보자

function solution(phone_number) {
    let answer = "";
                                            
    for(let i = 0; i < phone_number.length; i++){
        if (i < phone_number.length - 4){
            //뒷 4자리의 인덱스 값보다 작을 경우 (= 뒷4자리에 해당되지 않는 경우)/(11-4)7보다 작을경우!
            answer += "*" //answer = answer + "*"
        } else if (i >= phone_number.length - 4){
            //뒷 4글자의 인덱스값에 해당하는 경우
            // console.log(phone_number, i, phone_number[i])
            answer += phone_number[i] //answer = answer + phone_number[i]
        }         
    }
    
   return answer
}

1. 삼항연산자 사용

function solution(phone_number) {
    let answer = "";
                                            
    for(let i = 0; i < phone_number.length; i++){
        answer += (i < phone_number.length - 4 ? "*" : phone_number[i])
            //뒷 4자리의 인덱스 값보다 작을 경우 (= 뒷4자리에 해당되지 않는 경우)/(11-4)7보다 작을경우!
        //     answer += "*" //answer = answer + "*"
        // } else if (i >= phone_number.length - 4){
        //     //뒷 4글자의 인덱스값에 해당하는 경우
        //     // console.log(phone_number, i, phone_number[i])
        //     answer += phone_number[i] //answer = answer + phone_number[i]
        }         
    
   return answer
}

2.메서드 사용 (궁금했던 것!!!)

function solution(phone_number) {
    let answer = "";
    
    answer = answer.padStart(phone_number.length - 4, "*"); 
    //뒤 4글자 제외하고 * 로 채웠다요
    answer += phone_number.substring(phone_number.length - 4);
    
    return answer;
}

//substring은 문자열에서만 사용 가능! 슬라이스와 동일한데
//슬라이스는 문자열, 배열에서 사용 가능하지만 서브스트링은 문자열에서만 사용가능!
//첫번째 인자로 어디서부터 자를건지, 두번쨰인자는 어디까지 자를건지 보통 첫번째만 넣으면 끝까지 자른다

수박수박수박수박수?

문제

풀이
1.

function solution(n) {
    let answer = '';
    
    for (let i = 1; i <= n; i++){
        if (i % 2 === 1){
            //홀수일 떄
            answer += "수" //answer = answer + "수"
        }else if (i % 2 === 0) {
            //짝수일 때
            answer += "박" // answer = anwer + "박"
        }
    console.log(answer)
}
}
>
>
//홀수일 때 수, 짝수일 때 박 리턴하기.
//1부터 n 까지의 숫자를 돌면서 수, 박을 넣어주어야 한다.(반복문)
//n을 포함한 값까지 가져와야 한다. 부등호(i<=n;)

2. 조건문 안에 내용 수정

function solution(n) {
    let answer = '';
    
    for (let i = 1; i <= n; i++){
        if (i % 2 ){
            //홀수일 떄
            answer += "수" //answer = answer + "수"
        }else {
            //짝수일 때
            answer += "박" // answer = anwer + "박"
        }
   
}
    return answer
}

3. 삼항연산자 사용

function solution(n) {
    let answer = '';
    
    for (let i = 1; i <= n; i++){
        answer += (i % 2 === 1 ? "수" : "박");
    } //값이 홀수일 때 수, 짝수일 때 클론옆인 박
    return answer;
}

프로그래머스 할 때 아래 이미지처럼 콘솔로그 먼저 찍고 출력값을 먼저 확인해보자

profile
Slow and steady wins the race.

0개의 댓글