[20230217_프로그래머스 알고리즘_Lv.1]

YunTrollpark·2023년 2월 17일
0

1. 서울에서 김서방 찾기

문제 설명

String형 배열 seoul의 element중 "Kim"의 위치 x를 찾아, "김서방은 x에 있다"는 String을 반환하는 함수, solution을 완성하세요. seoul에 "Kim"은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니다.

제한 사항
• seoul은 길이 1 이상, 1000 이하인 배열입니다.
• seoul의 원소는 길이 1 이상, 20 이하인 문자열입니다.
• "Kim"은 반드시 seoul 안에 포함되어 있습니다.

function solution(a, b) {
  let a = 0
  seoul.map((data, index)=>{
    if(data === 'Kim')
      return a = index
  })
  return `김서방은 ${a}에 있다`
}

// 해설
// 1. 먼저 a라는 변수 선언(추후에 'Kim'의 index를 받음)
// 2. map에서 인자로 data, index를 받아서 조건문으로 'Kim'이 있다면 해당 index를 반환
// 3. solution의 return 값에 넣어줌

2. 나누어 떨어지는 숫자 배열

문제 설명

array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요.
divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요.

제한 조건
• arr은 자연수를 담은 배열입니다.
• 정수 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j] 입니다.
• divisor는 자연수입니다.
• array는 길이 1 이상인 배열입니다.

function solution(arr, divisor) {
const answer = arr.filter((item) => item % divisor === 0)
  return answer.length === 0 ? [-1] : answer.sort((a,b) => a-b)
}
// 해설
// 1. 받은 배열에서 filter를 사용해서 divisor 나눠서 나머지가 0인 배열을 반환
// 2. solution의 최종 return 값은 삼항 연산자를 활용해서 반환한 배열의 길이가 0이면 [-1] 반환, 그게 아니라면 sort로 최종 배열을 오름차순으로 정리

3. 핸드폰 번호 가리기

문제 설명

프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.
전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.

제한 조건
• phone_number는 길이 4 이상, 20이하인 문자열입니다.

function solution(arr, divisor) {
return `${'*'.repeat(phone_number.length-4)}${phone_number.slice(-4)}`
}
// 해설
// 1. 받은 문자열 중 repeat을 활용 전체 문자열의 길이에서 마지막 4자리를 뺀만큼 반복
// 2. 그리고 slice를 활용하여 문자열 맨 뒤에서 4개를 자름!

4. 음양 더하기

문제 설명

어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요.

제한 조건
• absolutes의 길이는 1 이상 1,000 이하입니다.
• absolutes의 모든 수는 각각 1 이상 1,000 이하입니다.
• signs의 길이는 absolutes의 길이와 같습니다.
• signs[i] 가 참이면 absolutes[i] 의 실제 정수가 양수임을, 그렇지 않으면 음수임을 의미합니다.

function solution(absolutes, signs) {
return signs.map((item, index)=> {
  if(item === true) return absolutes[index]
  else {return -absolutes[index]}
}).reduce((a,b) => a+b)
}
// 해설
// 1. signs에서 map을 통해 true면 absolutes true인 인덱스를 return 그렇지 않으면 -를 붙여서 retrun 그리고 reduce를 통해서 더해줌!

오늘도 힌트 안보고 머리 쥐어짜서 해결했다... 마지막꺼는 풀고 다른 사람들 코드 봤는데 reduce 함수를 진짜 신기하게 쓰더라... reduce랑 for each 공부해야지

profile
코딩으로 세상에 이야기하는 개발자

0개의 댓글