[TIL] 230613

김주희·2023년 6월 13일

내배캠 5주차 TIL

목록 보기
2/4

오늘의 목표

  1. 프로그래머스 분수의 덧셈 풀기
  2. 노드 입문 수업 2회독

▶️ 알고리즘....너무 어렵다

  • 혼자 풀어보려 했지만 역시나 시작도 못했다. 알고리즘 풀이 해주는 영상을 찾아 들어봤다. 문제를 풀어가는 과정부터 적는게 중요하다는 걸 알았다.
// 1. 분수 덧셈
	const newNumer = numer1 * numer2
    const newDenom = denom1 * numer2 + denom2 * numer1
    
// 2. 분자 분모의 최대공약수로 나눠줌
// 2-1. 분자 분모 중 작은 수 찾기
	let minNumber;
    if(newDenom < newNumer) {
        minNumber = newDenom;
    } else {
        minNumber = newNumer;
    }
// 2-2. 작은 수를 분자 분모로 나눠보기
// 2-2-1. 둘 다 나누어 떨어지면 그 나눈 수가 최대공약수
	if(newDenom % minNumber === 0) {
    	if (newNumer % minNumber === 0) {
        	return [newDenom / minNumber, newNumer / minNumber]
        }
 	}
// 2-2-2. 안 나누어 떨어지면 작은 수를 1 줄이고 2-2로 돌아가기
	while(true) {
        if(newDenom % minNumber === 0) {
            if (newNumer % minNumber === 0) {
        return [newDenom / minNumber, newNumer / minNumber]
            }
        }
    minNumber = minNumber - 1;
    }
  • 최대공약수를 어떻게 찾아야 하는지 감이 안잡혔는데, 영상 설명에서는 두 수 중 작은 수로 나눠보고 나머지가 0이 나온다면 최대공약수가 작은 수인 거고, 만약 나머지가 0이 아니라면 그 수보다 1씩 작은 수로 나눠 나머지가 0인 숫자를 찾는 식으로 코드를 짰다. minNumber가 1이 된다면 최대공약수가 1인 걸로!(모든 수는 1로 나누어지니)
  • for문으로 증감식 i--로 돌려야하나 했는데(그렇다면 조건식은 어떻게 짜야하나.....), while문으로도 해결할 수 있었다! for문은 정해진 횟수만큼 반복, while문은 조건식이 true일 경우에 반복! 따로 조건식으로 설정할 정해진 횟수가 없기 때문에 while문이 더 적합하다!
  • 2-2-1. 코드를 이중 if문이 아닌 && 연산자를 이용해 풀었는데 코드 실행이 되지 않았다. 풀이가 안되는 건가 싶었는데 역시나...분모, 분자 매개변수 값을 바꿔적어서 난 오류였다.🤣 무튼 && 연산자로도 풀이가 된다는 거!
	if(newDenom % minNumber === 0 && newNumer % minNumber === 0) {
    	return [newDenom / minNumber, newNumer / minNumber]
 	}
profile
꾸준히 하자

0개의 댓글