나 개발자 진짜 되냐?

코딩테스트 입문 - 삼각형의 완성조건 (2) ( min, max, 패턴 ) 본문

프로그래머스를 풀어보아요!/C++

코딩테스트 입문 - 삼각형의 완성조건 (2) ( min, max, 패턴 )

Snow Rabbit 2026. 5. 18. 22:41

 

고민이 많은 오늘

문제도 잘 안 풀리고

머리가 터지기 직전이다.

 

문제는 왜 이리 어려운 것인가....!!!

 


 

 

문제를 대충 이해는 했다.

가장 긴 변 < 나머지 두 변의 합

1. 둘 중 하나의 숫자가 최대 긴 경우

작은 숫자 + 새로운 문자 ( C ) > 큰 숫자

11 이랑 7일 때

7 + c > 11

하지만 c는 11보단 클 수 없으니

c는 5부터 11까지

 

2 새로 들어올 애가 최대 긴 경우

작은 숫자 + 큰 숫자 > C

11 + 7 > C

일 테니

11보다 큰 12부터 17까지

 

근데 이 경우의 수를 if문으로 해야 할지가 좀 의문이다.

 

그래도 나름 머리 써서 풀어보았다.

근데 자꾸 테스트케이스 두 개가 틀린다.

 

뭐가 문제일까..?

 

인지 씨한테 결국 물었다.

 

인지 씨가 원소가 최대 1000인걸 고려해야 한다고 했다

그래서 1000까지 했는데..?

라고 하니

만약에 small 1000에 big 1000이 나오면 어떡할 거냐고 했다.

삼각형의 절대 법칙

 

가장 긴 변이.. c라면..

1000 + C > 1000

c > 0;

그러면 0부터 1000까지

 

1000 + 1000 > C

C < 2000

1001부터 2000까지

 

여야 하니.. c는 2000까지 최소 나올 거고

그럼 1111로는 택도 없다는 것이다.

 

 

수정!

 

뿌듯해지던 찰나..

 

갑자기 나에게..

 

그렇게 쉬운 게 있었으면 진작 알려줘야지......

 

나도 문제를 풀면서 대충 짐작했었다.

 

가장 큰 숫자와 c의 범위가

연속된다는 것을..

 

더 쉽고, 다르게 표현하면

 

가장 긴 변이 big일 때엔

범위가 small의 값과 같고,

가장 긴 변이 C일 땐

small -1 값과 같았다.

 

예시로 11과 7을 보면

최대 길이가 11 일 땐

5,6,7,8,9,10,11로 총 7개다. = small 크기

그리고 최대 길이가 C 일려면

12,13,14,15,16,17 총 6개다 small 크기 - 1

 

그럼 그냥

small * 2 -1 해주면 된다. 

 

너무 어이가 없고


 

.. 음

 

 

 

1점인 것도 어이없다.

 

내 방식대로 풀 수 있어서 좋긴 했는데

이런 패턴 파악했으면..

더 쉽고 간단하게 풀었을 것을..

한 시간이 걸려부렸다...ㅋㅋ

 

풀 수 있음에 만족하고 뿌듯해하자..^^