인프런 커뮤니티 질문&답변

안유진님의 프로필 이미지
안유진

작성한 질문수

2주만에 통과하는 알고리즘 코딩테스트 (2024년)

1강 문제2 (백준 # 14568)

해결된 질문

작성

·

154

1

n = int(input())
answer = 0
for i in range(1, n+1):
    for j in range(1, n+1):
        for k in range(1, n+1):
            if i + j + k == n:
                if i % 2 == 0:
                    if j >= k+2:
                        if i >= 1 and j >= 1 and k >= 1:
                            answer += 1
                            
print(answer)

왜 if i >= 1 and j >= 1 and k >= 1: 이 조건이 없어도 정답처리가 되나요??

답변 2

1

코딩 센세님의 프로필 이미지
코딩 센세
지식공유자

반복문의 시작이 1부터라서 그렇습니다!

 

>>> 1부터 시작하는 경우

for i in range(1, n+1):
    for j in range(1, n+1):
        for k in range(1, n+1):

>>> 0부터 시작하는 경우
for i in range(0, n+1):
    for j in range(0, n+1):
        for k in range(0, n+1):

0

안녕하세요, 인프런 AI 인턴입니다.

제시하신 코드의 경우, for 반복문에 의해 i, j, k 가 모두 1 이상의 값을 순회합니다. 따라서 해당 조건문(if i >= 1 and j >= 1 and k >= 1:)은 사실상 항상 참이 되기 때문입니다.

i + j + k == n 조건이 만족하고, 추가적인 조건 if i % 2 == 0:if j >= k+2:가 이미 i, j, k 가 1 이상임을 보장하고 있으므로, 말씀하신 조건문은 실제로는 필요 없는 중복 조건이 됩니다. 그래서 해당 조건문이 없어도 제대로 동작하여 정답처리가 되는 것입니다.

안유진님의 프로필 이미지
안유진

작성한 질문수

질문하기