Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 컨트롤제트
- flutter
- 소인수분해
- 무작위로 K개의 수 뽑기
- 평행
- 문자열이 몇 번 등장하는지 세기
- OX퀴즈
- 콜라츠 수열 만들기
- 코딩테스트
- 조건 문자열
- 다항식 더하기
- programmers
- 이차원 배열 대각선 순회하기
- 왼쪽 오른쪽
- 수열과 구간 쿼리 2
- 프로그래머스
- 저주의 숫자 3
- Android Studio
- 최빈값 구하기
- 조건에 맞게 수열 변환하기 2
- 합성수 찾기
- 분수의 덧셈
- 등수 매기기
- 등차수열의 특정한 항만 더하기
Archives
- Today
- Total
지원연구소 공식 블로그
[PROGRAMMERS] 이차원 배열 대각선 순회하기(LV. 0) - Python 본문
[ 문제 ]
2차원 배열 board와 정수 k가 주어집니다. i + j <= k 를 만족하는 모든 (i, j)에 대한 board[i][j] 의 합을 return 하는 solution 함수를 완성해 주세요.
[ 제한사항 ]
- 1 ≤ board의 길이 ≤ 100
- 1 ≤ board[i]의 길이 ≤ 100
- 1 ≤ board[i][j] ≤ 10,000
- 모든 board[i]의 길이는 같습니다.
- 0 ≤ k < board의 길이 + board[i]의 길이
[ 입출력 예 ]
board | k | result |
[[0, 1, 2],[1, 2, 3],[2, 3, 4],[3, 4, 5]] | 2 | 8 |
< 입출력 예 #1의 board를 표로 나타내면 다음과 같습니다. >
i \ j | 0 | 1 | 2 |
0 | 0 | 1 | 2 |
1 | 1 | 2 | 3 |
2 | 2 | 3 | 4 |
3 | 3 | 4 | 5 |
- i + j가 2보다 작거나 같은 항들의 합은 0 + 1 + 2 + 1 + 2 + 2 = 8이므로 8을 return 합니다.
[ 해결 방법 ]
1. board[0]에서 board[0][k]까지의 합을 구하면 i = 0, j = 0부터 k까지 이므로 i + j <= k
2. board[1]에서 board[1][k-1]까지의 합을 구하면 i = 1, j = 0부터 k-1까지 이므로 i + j <= k
.....
3. board[k]에서 board[0]까지의 합을 구하면 i = k, j = 0이므로 i + j <= k
4. 이런 방식으로 i는 0부터 k까지, j는 k부터 0까지 반복하면서 합을 구한다.
[ solution.py ]
def solution(board, k):
answer = 0
for i in board:
answer += sum(i[0 : k+1])
k -= 1
if k < 0:
break
return answer
- while 반복문을 사용하면 런타임 에러가 뜨는 듯 하다.
> 🌻피드백은 언제나 환영입니다🌻 <
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[PROGRAMMERS] 문자열이 몇 번 등장하는지 세기 (LV. 0) - Python (0) | 2024.05.01 |
---|---|
[PROGRAMMERS] 등차수열의 특정한 항만 더하기 (LV. 0) - Python (1) | 2024.05.01 |
[PROGRAMMERS] 합성수 찾기 (LV. 0) - Python (0) | 2024.05.01 |
[PROGRAMMERS] 콜라츠 수열 만들기 (LV. 0) - Python (0) | 2024.05.01 |
[PROGRAMMERS] 컨트롤 제트 (LV. 0) - Python (0) | 2024.05.01 |