[Hackerrank] Python - 08 List Comprehensions

후유카와·2024년 11월 27일

Hackerrank

목록 보기
48/59

08. List Comprehensions

[ 난이도: Easy | 분야: Basic Data Types ]

1. 과제

과제 설명

리스트 비교에 대해 배워보자! 입력으로 정수 x, y 그리고 z가 주어지고 차원을 나타내는 정수인 n과 함께 제공된다.

i+j+k가 n과 같지 않도록 하는 3차원 좌표 (i,j,k)를 출력해라.

여기서 i는 0보다 크거나 같고 x보다 작거나 같고, j는 0보다 크거나 같고 y보다 작거나 같고 k는 0보다 크거나 같고 z보다 작거나 같다.

공부를 위해 다중 루프를 사용하는 대신 List Comprehension을 사용하라.

예시

x = 1

y = 1

z = 2

n = 3

가능한 [i,j,k]는:

[[0,0,0],[0,0,1],[0,0,2],[0,1,0],[0,1,1],[0,1,2],[1,0,0],[1,0,1],[1,0,2],[1,1,0],[1,1,1],[1,1,2]]이다.

모든 요소들을 더한 값이 3이 아닌 경우만 걸러내야 하므로:

[[0,0,0],[0,0,1],[0,0,2],[0,1,0],[0,1,1],[1,0,0],[1,0,1],[1,1,0],[1,1,2]]이 나온다.

입력 형식

네 개의 정수 x, y, z 그리고 n이 개별 줄로 제공된다.

제약 사항

사전식 증가 순서에 입각하여 리스트를 출력해라.

입력 예시0

1
1
1
2

출력 예시0

[[0, 0, 0], [0, 0, 1], [0, 1, 0], [1, 0, 0], [1, 1, 1]]

설명0

각 변수 x, y 그리고 z는 값으로 0 또는 1을 갖는다. 이 리스트에서 가능한 모든 permutation은

[i, j, k] = [[0,0,0],[0,0,1],[0,1,0],[1,0,0],[1,1,1]] 이다.

각 요소의 합이 n = 2와 같은 것들을 제거하면 위와 같다.

입력 예시1

2
2
2
2

출력 예시1

[[0, 0, 0], [0, 0, 1], [0, 1, 0], [0, 1, 2], [0, 2, 1], [0, 2, 2], [1, 0, 0], [1, 0, 2], [1, 1, 1], [1, 1, 2], [1, 2, 0], [1, 2, 1], [1, 2, 2], [2, 0, 1], [2, 0, 2], [2, 1, 0], [2, 1, 1], [2, 1, 2], [2, 2, 0], [2, 2, 1], [2, 2, 2]]

문제

if __name__ == '__main__':
    x = int(input())
    y = int(input())
    z = int(input())
    n = int(input())

더보기

정답

if __name__ == '__main__':
    x = int(input())
    y = int(input())
    z = int(input())
    n = int(input())
    result = [[a,b,c] for a in range(x+1) for b in range(y+1) for c in range(z+1) if a+b+c != n]
    print(result)

©️Hackerrank. All Rights Reserved.

profile
안녕하세요! 저는 전자공학을 전공하며 하드웨어와 소프트웨어 모두를 깊이 있게 공부하고 있는 후유카와입니다. Verilog HDL, C/C++, Java, Python 등 다양한 프로그래밍 언어를 다루고 있으며, 최근에는 알고리즘에 대한 학습에 집중하고 있습니다. 기술적인 내용을 공유하고, 함께 성장할 수 있는 공간이 되기를 바랍니다. 잘못된 내용이나 피드백은 언제나 환영합니다! 함께 소통하며 더 나은 지식을 쌓아가요. 감사합니다!

0개의 댓글