yha97 2023. 4. 25. 00:45

날짜 : 2023. 04. 25

사용 언어 : python

 

문제

https://www.acmicpc.net/problem/10448

 

 

코드

import sys

t = int(sys.stdin.readline())  # 테스트케이스
tri = list()  # 삼각수 저장 리스트
res = [False] * 1001  # 결과값 저장 리스트
for i in range(1, 40):
    a = int(i * (i-1) // 2)  # 삼각수 저장
    tri.append(a)

for a in range(1, len(tri)):
    for b in range(a, len(tri)):
        for c in range(b, len(tri)):
            if (tri[a]+tri[b]+tri[c]) in range(1001):
                res[tri[a]+tri[b]+tri[c]] = True  # 삼각수 가능한 케이스
#print(res)

for _ in range(t):
    k = int(sys.stdin.readline())
    if res[k]:
        print(1)
    else:
        print(0)

 

 

풀이

- 삼각수에 대한 리스트를 만들고, 각 삼각수에 대하여 삼중 for문을 통해 가능한 케이스들을 필터링한다.

- 그 후에 테스트케이스를 입력받고 아웃풋을 출력한다.

 

 

알게된 점

- 스터디에서 풀었던 문제였고, 문제를 이해하지 못해 조금 고민했었다.

- 그렇지만 문제풀이방식은 크게 어렵지 않아서 바로 풀 수 있었다.

 

 

참고 사이트