페블_
반짝이는 시냅스
페블_
전체 방문자
오늘
어제
  • 전체글 보기 (96)
    • QA (0)
    • 프로젝트 회고 (4)
    • 프로젝트 과정 기록 (12)
    • UI 구현 연구일지 (8)
    • Front-end (31)
      • Javascript (7)
      • CSS (10)
      • React (5)
      • Typescript (3)
      • Nextjs (3)
      • 스타일링 라이브러리 (3)
    • Back-end (0)
      • Express (0)
      • DB (0)
    • CS (0)
      • 자료구조 & 알고리즘 (0)
    • CI&CD (1)
    • 툴 사용법 (4)
      • Git (1)
      • Library&패키지 (2)
      • 기타 개발관련 (1)
    • 알고리즘 이론 & 풀이 (36)
      • 백준(BOJ) (14)
      • 프로그래머스 (22)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 개발블로그_시작
  • 백준
  • chartjs
  • 파이썬
  • storybook
  • eslint
  • 알고리즘
  • UI 컴포넌트
  • react
  • TypeScript
  • JS
  • 캐러셀
  • 토이프로젝트
  • 선형대수학
  • Python
  • emotion
  • 시리즈_표지
  • 생각

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
페블_

반짝이는 시냅스

알고리즘 이론 & 풀이/프로그래머스

프로그래머스 Lv.0 | 분수의 덧셈

2023. 7. 2. 01:23

문제

https://school.programmers.co.kr/learn/courses/30/lessons/120808

📝풀이

  1. 분모를 서로 곱해 통분하고, 각 분자에는 상대방의 분모를 곱해 통분한 다음 더해준다.
  2. 기약분수가 되려면 분모와 분자를 두 수의 최대공약수(GCD)로 나눠줘야 한다. (GCD - Greatest Common Divisor)
  3. 최대공약수의 범위는 1에서부터 최대 Math.min(분모, 분자)까지 될 수 있다. 따라서 for문을 돌며 분모와 분자를 나눠 나누어 떨어지게 하는 수를 gcd에 저장하고, for문이 종료될 때 나오는 최종 gcd로 분모와 분자를 나눈 결과를 반환하면 된다.

💻코드

function solution(numer1, denom1, numer2, denom2) {
    let numer = numer1 * denom2 + numer2 * denom1;
    let denom = denom1 * denom2;
    let gcd = 1;
    
    for(let i = 1; i <= Math.min(numer, denom); i++) {
        if(numer % i === 0 && denom % i === 0) gcd = i;
    }
    return [numer / gcd, denom / gcd];
}

'알고리즘 이론 & 풀이 > 프로그래머스' 카테고리의 다른 글

프로그래머스 Lv.0 | 구슬을 나누는 경우의 수  (0) 2023.07.07
프로그래머스 Lv.0 - 직각삼각형 출력하기 +) nodejs readline  (0) 2023.07.06
프로그래머스 Lv.0 | 최빈값 구하기  (0) 2023.07.05
프로그래머스 Lv.0 | 자릿수 더하기  (0) 2023.06.30
프로그래머스 Lv.0 | 캐릭터의 좌표  (0) 2023.06.29
    '알고리즘 이론 & 풀이/프로그래머스' 카테고리의 다른 글
    • 프로그래머스 Lv.0 - 직각삼각형 출력하기 +) nodejs readline
    • 프로그래머스 Lv.0 | 최빈값 구하기
    • 프로그래머스 Lv.0 | 자릿수 더하기
    • 프로그래머스 Lv.0 | 캐릭터의 좌표
    페블_
    페블_

    티스토리툴바