[프로그래머스]Algorithm_23.03.21

윤성해·2023년 3월 21일
0

알고리즘

목록 보기
6/22
post-thumbnail

서울에서 김서방 찾기

문제

내생각

//1. for문 돌려서
//2. "Kim"의 인덱스값을
//3. answer에 "김서방은 seoul[i]에 있다" 넣어주기?
혹은
//1. string.indexOf("Kim") // 인덱스값 출력
//2. 위 1번을 answer에 push 해주기.

내풀이

let seoul =["Jane","Kim"]

function solution(seoul) {
    let answer = '';
    for (let i = 0; i<= seoul.length; i++){
      if(seoul[i] === "Kim"){
        answer = "김서방은 + seoul[i]+ 에 있다."
      }
      }
  return answer
    }  

정답

1.

function solution(seoul) {
    let x = 0;
    
    for (let i = 0; i < seoul.length; i ++){
        if(seoul[i] === "Kim"){//
            x = i;  //seoul[i]안해도 될까?
            return `김서방은 ${x}에 있다`
            //break;
        }
      }        
    }  //백틱으로 문자랑 숫자 같이 사용
  1. 문제가 서울의 길이가 1이상 1000이하인데 두번만에 찾았으니까 불필요하게 계속 돌지 않도록 브레이크 걸기 -> 함수 밖에서 사용은 브레이크, 안에서는 리턴
  2. 리턴을 함수 안에서 써주기

2. 리팩토링 -> x랑 i 같으니까 아래처럼

function solution(seoul) {
    
    for (let i = 0; i < seoul.length; i ++){
        if(seoul[i] === "Kim"){//
            return `김서방은 ${i}에 있다`
        }
      }        
    }  //백틱으로 문자랑 숫자 같이 사용

3. indexOf 메서드 사용

function solution(seoul) {
   const x = seoul.indexOf("Kim");
    return `김서방은 ${x}에 있다`
}

평균 구하기

문제

내생각

// arr 값 다 더해서 / arr.length 해주어야 함
// 1. for 반복문으로 arr 돌리고
// 2. count = count + count++ (?) 이런식인 것 같은데..
// 3. answer = count / arr.length

내풀이

function solution(arr) {
   let answer = 0;
   let count = 0;
  
   for (let i = 0; i < arr; i++){
     answer = (count++ / arr.length) 
   }
}

정답

1.

function solution(arr) {
   let sum = 0; // 총 합을 저장하는 변수
    for (let i = 0; i < arr.length; i++){
          sum += arr [i];
    }
return sum / arr.length;
}

2. 메서드 사용

function solution(arr) {
 const sum = arr.reduce((acc, cur) => {
     
     // console.log(acc,cur)
     return acc + cur;
   },0)
 return sum /arr.length
 }
  • reduce 관련 다른 연습문제
const arr = [1,2,3,4,5,6,7];


arr.reduce( function(acc, cur){
 // console.log(acc, cur)
 return acc + cur
 
}, )//초기값 설정


가운데 글자 가져오기

문제

내생각

못품 다시풀어보기

내풀이

정답

  • index는 무조건 정수입니당 소수점을 가져올 수 없어요.
  • Math.floor 해서 내림차수 하면 중간의 인덱스값 나옴(홀수일 경우)
  • 짝수 만드는거는 -1
function solution(s) {
    let answer = ""
    const half = Math.floor(s.length / 2);
    
    answer +=s[half];
    if(s.length % 2 === 0)
        //짝수 길이를 가지는 문자열일 경우
        answer = s[half - 1] + answer
 // console.log(s, s.length, half, answer)
    
    return answer;
}

2. 삼항 연산자, subString 이용

function solution(s) {

    const half = Math.floor(s.length / 2);
    return s.length % 2 === 1
    ? s[half] //홀수 문자열
    : s.substring( half - 1, half+1) //짝수 문자열    
}
>
//두번째 인자에 어디까지 자르겠다라고 생각하면 거기에 무조건 +1를 해주기->해당 인덱스까지 자를 수 있다


Math.floor = ~~ (틸트연산자) ➡️ 참고만 하기! 실무에서 많이 쓰이지는 않는다.

profile
Slow and steady wins the race.

2개의 댓글

comment-user-thumbnail
2023년 3월 21일

잘하구 있어~

1개의 답글