gurwhddl
코알못 공부블로그
gurwhddl
전체 방문자
오늘
어제
  • 분류 전체보기
    • CSS
    • JS
    • node.JS
    • REACT
    • 코딩테스트 연습

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
gurwhddl

코알못 공부블로그

코딩테스트 연습

프로그래머스 lev 2 - 카펫 JS

2023. 5. 30. 22:56

문제

Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다.

카펫

Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 갈색으로 색칠된 격자의 개수는 기억했지만, 전체 카펫의 크기는 기억하지 못했습니다.
Leo가 본 카펫에서 갈색 격자의 수 brown, 노란색 격자의 수 yellow가 매개변수로 주어질 때 카펫의 가로, 세로 크기를 순서대로 배열에 담아 return 하도록 solution 함수를 작성해주세요.

풀이

사진에서 얻을 수 있는 가로,세로에 대한 정보가 많아서 헷갈릴 수 있긴 한데, 그냥 하나만 보고 가는게 제일 편한거같음

  • 가로 + 세로는 (brown+4)/2
  • 가로 * 세로는 brown+yellow
    일단 brown은 가로 한줄 * 2 + 세로 한줄 * 2 - 4(겹치는곳)으로 만들어졌고, 이 식을 풀어보면 가로+세로 = (brown+4) / 2
    brown+yellow가 타일 전체의 넓이랑 똑같으므로 가로세로 = brown+yellow
    가로>=세로 라는 조건이 있기 때문에 가로가 가질 수 있는 최댓값부터 조사해서 세로가 가로의 길이보다 길어지기 전까지 조사하면서 가로
    세로 === brown+yellow를 만족하는지 조사
    ex) 가로+세로가 7이라면 (7,0)은 안될테고, 그러면 (6,1)부터 시작해서 (4,3)까지

코드

function solution(brown, yellow) {
    //가로 + 세로는 (brown+4)/2
    //가로 * 세로는 brown+yellow
    let 세로 = 1
    for(let 가로=(brown+4)/2-1;가로>세로;가로--){
        세로=(brown+4)/2-가로
        if(가로*세로 === brown+yellow){
            return [가로,세로]
        }
    };
}
저작자표시 (새창열림)

'코딩테스트 연습' 카테고리의 다른 글

백준 2805 - 나무 자르기  (0) 2023.06.01
프로그래머스 - 124나라의 숫자 JS  (0) 2023.05.31
프로그래머스 - 문자열 압축 JS  (0) 2023.05.30
백준 2589 - 보물섬  (0) 2023.05.28
백준 2156 - 포도주 시식  (0) 2023.05.24
    '코딩테스트 연습' 카테고리의 다른 글
    • 백준 2805 - 나무 자르기
    • 프로그래머스 - 124나라의 숫자 JS
    • 프로그래머스 - 문자열 압축 JS
    • 백준 2589 - 보물섬
    gurwhddl
    gurwhddl

    티스토리툴바