알고리즘 #0002

박영무·2025년 1월 13일

JAVA 알고리즘

목록 보기
2/11

I. 문제 상황

1. 초기 코드 작성

  • 주어진 문제에 따라 직사각형의 가로, 세로 길이를 계산하는 코드를 구현해야 한다.
  • 가로 및 세로의 최소 길이는 3이며, 입력 값인 brown과 yellow 값을 더한 값과 가로와 세로를 곱한 값이 일치해야 한다.
    • brown + yellow == width * height
  • [코드 1] 처음 작성한 코드 답안
import java.util.*;
class Solution {
    public int[] solution(int brown, int yellow) {
        int[] answer = new int[2];
        int area = brown + yellow;
        for (int x = 3; x < (int)(area/3); x++) {
            if (area%x != 0) {
                continue;
            }
            int y = area/x;
            if (brown != (x*2 + (y-2)*2)) {
                continue;
            }
            answer[0] = y;
            answer[1] = x;
            break;
        }
        return answer;
    }
}

2. 실행 결과

  • 하지만, 아래의 [결과 1]에서처럼 오류가 발생하였다.
  • [결과 1]

II. 문제 분석

1. 테스트 케이스 분석

  • 기존 [코드 1]에서, 가로와 세로의 길이가 모두 3인 상황을 가정할 때, 반복문의 조건부에서는 x < 3일 때까지만 반복문이 실행되므로 결과적으로 한 번도 반복문이 실행되지 않게 된다.
    [코드 2] 수정한 코드

2. 실행

  • [결과 2]
profile
시행착오는 성장의 밑거름입니다.

0개의 댓글