개발 이모저모/프로그래머스 알고리즘

[Algorithm] 프로그래머스 레벨[0] 풀이 - (Javascript)(12)

creativeDeveloper! 2023. 4. 18. 21:36
728x90

■ 삼각형의 완성조건(1)

 

  • 이 문제의 접근방식은 sides의 배열값들을 오름차순으로 정렬한뒤,
  • 가장 작은 큰 수를 제외한 나머지 두 값의 합을 구하고 
  • 가장 큰 수와 두수를 비교해서 1 또는 2를 return 해주면 된다.
  • 이 과정에서 정렬을 위해 sort함수와 경우의 수를 위해 if-else 문을 썼다.
  • 다른 사람들의 풀이를 보면
  • return 부분을 삼항연산자를 이용해 깔끔하게 한줄로 작성할 수 있다.
function solution(sides) {
    sides = sides.sort((a,b) => a-b)
    return sides[0]+sides[1] > sides[2] ? 1 : 2;
}

■ 가까운 수 

  • 이 문제의 접근방식은 배열안에 있는 수 중에서 n과 가장 가까운 수를 찾아서 반환해주는것이다.
  • 가장가까운 수를 찾기 위해 배열의 모든 요소를 순회하면서 n과의 차이를 계산한 뒤
  • 그 중에서 가장 작은 차이를 가지는 요소를 반환하기로 한다.
  • 먼저  array 배열의 첫번째 요소를 가장가까운 수로 초기화한다.
  • 둘의 차이에 관한 변수를 절댓값으로 변환해 저장한다.
  • 반복문 for를 사용해 배열을 순회하면서 주어진 n과의 차이를 계산한다.
  • 조건에서 차이가 같은 요소가 여러개일 경우 더 작은 수를 선택하라는 문장이 있어서
  • else if문을 사용해서  newDiff 와 diff가 같을때 close에 array[i]를 반환해준다.

■ 대문자와 소문자

 

  • 이 문제의 접근방식은
  • 먼저 my_string을 반복문을 통해 문자에 하나씩 접근한다. 각문자가 대문자일 경우 소문자로
  • 소문자일 경우 대문자로 변환한 뒤 새로운 문자열 result에 추가한다.
  • 코드를 한줄씩 설명하면,
  • result를 빈문자열로 초기화한다.
  • 반복문 for를 통해 my_string 문자에 접근했다.
  • 변수 char에 my_string 의 문자중 하나를 저장한다.
  • 조건문 if-else문을 이용해 char는 a~z까지의 조건을 갖고 있다.
  • 결과로나온 char를 대문자로, 그외는 소문자로 변환한값을 result에 저장해준다.
  • 그 후에 result 반환한다.

■ 암호 해독

function solution(cipher, code) {
  let result = "";
  for (let i = code - 1; i < cipher.length; i += code) {
    result += cipher[i];
  }
  return result;
}

 

  • 갑자기 캡쳐버튼이 먹히지 않아서 급한데로 코드블럭으로 올렸다.
  • 이 문제의 접근방식은
  • 먼저, 문자열 cipher에서 code의 배수번째 글자를 추출한다.
  • 이때, 코드에서의 인덱스는 0부터 시작하므로, 추출할 글자의 인덱스는 code-1이 된다.
  • 추출한 글자는 문자열 result에 추가된다.
  • cipher.length 만큼 반복해주고 최종으로 추출된 문자열 result를 반환한다.

728x90