갓똥
나는야 프로그래머
갓똥
전체 방문자
오늘
어제
  • 분류 전체보기 (186)
    • 프로그래밍 (146)
      • 자바 (9)
      • 안드로이드 (2)
      • 유니티 (20)
      • C++ (38)
      • C# (56)
      • HTML (2)
      • 파이썬 (3)
      • 자료구조 (2)
      • 알고리즘 (0)
      • 문제풀이 (4)
      • 디자인 패턴 (7)
      • 카카오톡 봇 (1)
      • 엑셀 (1)
      • 기타 (1)
    • 게임 (21)
      • 테일즈위버 (0)
      • 카이로소프트 (1)
      • 순위 (19)
      • 기타 (1)
    • 일상 (13)
      • 카페 (1)
      • 방탈출 (12)
    • 기타 (6)
      • 웃긴자료 (5)

블로그 메뉴

  • 홈
  • 방명록

공지사항

인기 글

태그

  • 자바
  • c# coroutine
  • c# unboxing
  • C++ virtual
  • c# 코루틴
  • 모바일 게임 순위
  • 게임 매출 순위
  • c# delegate
  • pc게임 순위
  • C# 예외 처리
  • c# collection
  • 알고리즘
  • 유니티 그래프 그리기
  • 강남 방탈출
  • C++ 소멸자
  • 전세계게임매출순위
  • 게임 디자인 패턴
  • 게임매출순위
  • 2020년 게임 매출
  • c# Thread
  • C# boxing
  • Unity Graph
  • 유니티 그래프
  • 글로벌게임매출
  • 전세계 게임 매출
  • 유니티 골드그래프
  • 롤 골드그래프
  • pc 게임 순위
  • C++ 상속
  • C++

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
갓똥

나는야 프로그래머

[C#] 프로그래머스 카펫
프로그래밍/문제풀이

[C#] 프로그래머스 카펫

2020. 4. 30. 01:51
728x90
반응형

문제 설명

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

Leo는 집으로 돌아와서 아까 본 카펫의 빨간색과 갈색으로 색칠된 격자의 개수는 기억했지만, 전체 카펫의 크기는 기억하지 못했습니다.

Leo가 본 카펫에서 갈색 격자의 수 brown, 빨간색 격자의 수 red가 매개변수로 주어질 때 카펫의 가로, 세로 크기를 순서대로 배열에 담아 return 하도록 solution 함수를 작성해주세요.

 

제한사항

  • 갈색 격자의 수 brown은 8 이상 5,000 이하인 자연수입니다.
  • 빨간색 격자의 수 red는 1 이상 2,000,000 이하인 자연수입니다.
  • 카펫의 가로 길이는 세로 길이와 같거나, 세로 길이보다 깁니다.

 

입출력 예

 

 

using System;
using System.Collections.Generic;

public class carpet
{
	public static int[] solution(int brown, int red)
    {
        int[] answer = new int[] { };

        for (int i=red; i>=1; i--)
        {
            if(red%i==0)
            {
                if((i+2)*2+(red/i*2) == brown) { 
                    answer = new int[] { i + 2, 2+red/i };
                    return answer;
                }
            }
        }

        return answer;
    }
    
    public static void Main()
    {
        // 테스트
        int[] a = solution(16, 9);
        Console.WriteLine(a[0] +", "+ a[1]);
    }
}

 

red와 brown의 관계가
red가 한 줄일 때 위아래 : (red+2)*2  | 사이드 : 1*2  위아래와 사이드를 합친 것 : brown
red가 두 줄일 때 위아래 : (red/2+2)*2  | 사이드 : 2*2  위아래와 사이드를 합친 것 : brown
red가 세 줄일 때 위아래 : (red/3+2)*2  | 사이드 : 3*2  위아래와 사이드를 합친 것 : brown
... 과 같은 규칙이 있음을 알 수 있다.
위 수식을 계산했을 때 brown과 일치하는 것을 찾았고
일치할 때 가로 : red가로+2 | 세로 : red세로+2 만 하면 된다.
728x90
반응형

'프로그래밍 > 문제풀이' 카테고리의 다른 글

[C#] 단어 퍼즐  (0) 2020.05.08
[파이썬] 프로그래머스 카펫  (0) 2020.04.30
[C#] 올바른 괄호  (0) 2020.04.28
    '프로그래밍/문제풀이' 카테고리의 다른 글
    • [C#] 단어 퍼즐
    • [파이썬] 프로그래머스 카펫
    • [C#] 올바른 괄호
    갓똥
    갓똥
    공부하며 알아가는 내용을 정리해 봅니다.

    티스토리툴바