728x90
반응형
using System;
using System.Numerics;
public class Solution
{
public int[] solution(int brown, int yellow)
{
int[] answer = new int[] { 3, 3 };
int y;
int width = brown + yellow;
for (int x = 1; x <= width; x++)
{
y = width / x;
if(x < y)
continue;
if ((width - ((x * 2) + (y * 2) - 4)) == yellow)
{
answer[0] = x;
answer[1] = y;
return answer;
}
}
return answer;
}
}
다른분의 코드를 참고했다.
이 코드를 납득하기까지 생각보다 엉뚱한 부분에서 오래걸렸다.
테스트케이스를 만들었는데 yellow가 7일 경우
1번) - Brown 17개
000000
011110
011100
000000
2번) - Brown 18개
00000
01110
01110
01000
00000
위 두가지 중 하나라고 생각했다. 그러나 이 경우에는..
000000000
011111110
000000000
이게 맞더라..
프로그래머스 문제의 문제점이 이런 부분에 대한 코멘트가 없다는것이다.
(정확히는 문제 설명이 모호한 경우가 많다는거..)
문제를 읽는 사람에 따라서
1. "테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫"
-> 테두리가 무조건 1줄인 것으로 생각할 수 있음
2. 다양한 테스트케이스가 없다.
-> Yellow의 값이 3이상의 홀수 값일 때의 테스트케이스가 없음
-> 홀수일 때 카펫의 모양은 이해하기에 따라 다르게 해석이 될 수 있음
따라서 명확하게 "이런 경우에는 이런씩으로 된다."고 알려주어야함
문제 설명에 대해 아쉬움이 많았지만
여러가지 케이스에 대해 조금 더 생각해보지 못했던 나의 미숙함을 다시 한 번 생각하게 되었다.
반응형
'프로그래밍 > 기타' 카테고리의 다른 글
유니코드(Unicode)와 UTF-8 (0) | 2021.02.10 |
---|---|
ASCII - 아스키 (American Standard Code for Information Interchange) (0) | 2021.02.06 |
프로그래머스 - 모의고사 (C#) (2) | 2021.01.18 |
프로그래머스 - 이중우선순위큐 (C#) (3) | 2021.01.17 |
프로그래머스 - 디스크 컨트롤러 (C#) (0) | 2021.01.17 |