99클럽 코테 스터디 21일차 TIL

2024. 11. 17. 16:43·코딩테스트/99클럽 4기

프로그래머스 - 카펫

먼저 전체 카펫의 크기는 brown + yellow이다.

그리고 노란색 격자의 수는 1 이상이어야 하므로 세로의 길이는 3 이상부터 시작한다.

반복문을 3부터 시작하여 전체 카펫 크기와 세로 길이를 나누면 가로길이를 구할 수 있다.

 

구현 1 - 실패

import java.util.Arrays;

class Solution {
    public int[] solution(int brown, int yellow) {
        int totalSize = brown + yellow;
        int col = 3;
        int row = totalSize / col;
        while (totalSize / col >= col) {
            if (totalSize % col == 0) {
                row = Math.min(row, totalSize / col);
            }
            col++;
        }

        int[] answer = new int[2];
        answer[0] = row;
        answer[1] = totalSize / row;

        return answer;
    }
}

 

가로길이가 세로 길이보다 길거나 같아야 하기 때문에 while문으로 row >= col을 종료 조건으로 사용했다.

col이 증가함에 따라 반복되는 횟수도 줄어들 것이라 생각해 while문을 사용했다.

 

Math.min을 사용한 이유는 totalSize가 나올 수 있는 여러 개의 가로/세로 길이 중,

가로는 가장 작은 값이어야 하고 세로는 가장 큰 값이어야 한다고 생각했기 때문이다.

마지막 입출력을 예로 들면, totalSize는 48이다.

48이 될 수 있는 가로/세로 길이는 [16, 3], [12, 4], [8, 6]이다.

그래서 row 값 중, 가장 작은 값이 될 수 있도록 Math.min을 사용했다.

 

구현 2

고려하지 않았던 부분

  • 갈색 테두리 1줄
  • 노란색 격자의 수

갈색 격자는 사각형 테두리 1줄밖에 없고, 노란색 격자가 사각형 내부를 채운다.

결국, (가로 - 2) * (세로 - 2)를 했을 때 노란색 격자의 전체 크기가 나온다.

public int[] solution(int brown, int yellow) {
    int[] answer = new int[2];

    int totalSize = brown + yellow;
    for (int col = 3; col <= totalSize; col++) {
        if ((totalSize / col - 2) * (col - 2) == yellow) {
            answer[0] = totalSize / col;
            answer[1] = col;
            break;
        }
    }

    return answer;
}

프로그래머스 - 카펫

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

저작자표시 (새창열림)

'코딩테스트 > 99클럽 4기' 카테고리의 다른 글

99클럽 코테 스터디 23일차 TIL  (0) 2024.11.19
99클럽 코딩 테스트 22일차 TIL  (1) 2024.11.18
99클럽 코테 스터디 20일차 TIL  (1) 2024.11.16
99클럽 코테 스터디 19일차 TIL  (1) 2024.11.15
99클럽 코테 스터디 18일차 TIL  (2) 2024.11.14
'코딩테스트/99클럽 4기' 카테고리의 다른 글
  • 99클럽 코테 스터디 23일차 TIL
  • 99클럽 코딩 테스트 22일차 TIL
  • 99클럽 코테 스터디 20일차 TIL
  • 99클럽 코테 스터디 19일차 TIL
tjdgus
tjdgus
  • tjdgus
    Do It...
    tjdgus
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Language
        • Java
      • CS
        • Data Structure
        • OS
        • Algorithm
        • Network
      • 오류 모음집
      • ETC
      • 함수형 프로그래밍
      • JPA
      • Toy
      • 데이터베이스
      • Spring
      • 코딩테스트
        • 99클럽 4기
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    오블완
    TiL
    개발자취업
    항해99
    티스토리챌린지
    코딩테스트준비
    99클럽
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
tjdgus
99클럽 코테 스터디 21일차 TIL
상단으로

티스토리툴바