[231109] 알고리즘 Level.1

Bora.K | 권보라·2023년 11월 9일
1

알고리즘

목록 보기
3/11
post-thumbnail

알고리즘 문제풀이 Levle.1


오늘 오전에 두 문제를 풀었는데, 오후에 알고리즘 스터디가 있어서 두 문제를 더 풀었다. 코드리뷰 하면서 배우는 것도 많은 것 같다.

[#01] 짝수와 홀수



[#02] 평균 구하기



[#03] 두 정수 사이의 합

🔓내 코드 리뷰

처음에는 a가 무조건 b보다 작다고 생각하고 그냥 for문만 돌려서 arr 배열에 push하도록 코드를 짰었다. 그런데 코드를 실행해보니 오류가 떠서 보니 a, b 중 어떤 수가 더 크고 작은지 알 수 없었다. 그래서 if문을 추가해서 a가 더 큰 경우와 b가 더 큰 경우로 나누어서 for문을 두 번 돌렸다. 뭔가 더 간단한 방법이 있지 않을까 생각했지만, 떠오르진 않았다.

📌다른 사람 코드 리뷰

function adder(a, b, s = 0) {
  for (var i = Math.min(a, b); i <= Math.max(a, b); i++) s += i;
  return s;
}

Math.min, Math.max를 이용해서 for문 안으로 넣으니 한 줄이면 끝났다. 그리고 배열을 만들어서 push하고, reduce로 배열들의 합을 구하는 번거로운 방법이 아닌, 초기값 s=0으로 두고 s에 i를 추가하면 간단했다.

Math.min() 최소값 리턴
Math.max() 최대값 리턴


[#04] 자릿수 더하기

🔓내 코드 리뷰

이 문제는 코드리뷰 스터디 중 조원 한 분이 풀지 못했다고 하여 조원들끼리 같이 풀어본 문제이다. 처음에는 숫자를 어떻게 배열로 바꾸어 주어야 할 지 몰라서, 결국 공식문서를 찾아봤다. split 메서드는 알고는 있었는데, 이런 상황에서 적용이 잘 안된다.

split("기준이 되는 문자") 문자열을 배열로 변환해주는 메서드

const str = 'Hello World';

const words = str.split(" ");
// 공백을 기준으로 나누어서 단어 단위의 배열로 반환
//[ 'Hello', 'World' ]

const chars = str.split("");
// 알파벳 단위의 배열로 반환
// ['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd']

// 문장의 배열로 반환
const strCopy = str.split();   
[ 'Hello World' ]

📌다른 사람 코드 리뷰

function solution(n) {
  const str = String(n);
  const newArr = [...str];
  return newArr.reduce((acc, cur) => Number(acc) + Number(cur), 0);
}
  • 전개연산자 사용
    위 처럼 문제를 풀고 자리로 돌아왔는데, 화면 공유가 되어 있어서 조원분 중 첼린지 그룹인 분께서 코드 리뷰를 해 주셔서 수정해 보았다. 문자열을 배열로 바꾸는 방법으로 split이 아닌 전개 연산자를 사용했다. 전개연산자는 배열에서만 사용할 수 있는 줄 알았는데, 문자열에서도 사용할 수 있구나... 새로운 용법을 알게 되었다.

  • reduce 안에서 숫자로 변환시켜주기
    그리고 mapreduce가 둘 다 배열을 돌리는 함수로, 두 개를 모두 쓰는 것보다 reduce 안에서 누적값, 현재값이 출력되는 부분에서 Number()로 숫자로 변환해주는 방법을 제시해 주었다. 좋은 방법인 것 같다.

profile
Frontend Engineers

0개의 댓글