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.
'프로그래밍 언어 > Python' 카테고리의 다른 글
[Hackerrank] 10. Nested Lists (0) | 2024.03.02 |
---|---|
[Hackerrank] 09. Find the Runner-Up Score! (0) | 2024.03.02 |
[Hackerrank] 07. Print Function (0) | 2024.02.27 |
[Hackerrank] 06. Write a function (1) | 2024.02.27 |
[Hackerrank] 05. Loops (2) | 2024.02.26 |