일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 맛집
- Baekjoon
- ADP
- 위대한 수업
- 빅데이터
- Joseph Samuel Nye Jr.
- python
- Hacker Rank
- 후기
- Progate
- KMOOC
- 백준
- 데이터분석전문가
- MySQL
- K-MOOC
- EBS
- Great Minds
- 조지프 나이
- 정치학
- 당신이 몰랐던 진화론
- CNN10
- ADsP
- 누가 진정한 리더인가
- 데이터분석전문가가이드
- 자료구조
- 공부정리
- Udemy
- 코테
- 미분적분학
- 알고리즘
Archives
- Today
- Total
ㅇ
[BAEKJOON] 7단계_ 2차원 배열 본문
julia319 정보
시도했지만 맞지 못한 문제
www.acmicpc.net
2738번 행렬 덧셈
2차원 행렬을 만들 때는 행, row, 줄 단위로 리스트를 만들어 빈 리스트에 추가하면 된다.
# 행(줄)의 수, N과 열(칸)의 수 M
N, M = map(int, input().split())
# 입력 행렬 A, B와 출력 행렬 ans를 담을 빈 리스트를 선언한다.
A, B, ans = [], [], []
# 행, 줄의 수 만큼 입력 받는다.
for _ in range(N):
row = list(map(int, input().split()))
A.append(row)
for _ in range(N):
row = list(map(int, input().split()))
B.append(row)
# 출력 행렬 ans를 만드는 반복문
for row in range(N):
# 임시 행을 넣을 빈 리스트
tmp = []
# A와 B 행렬의 행 별로 값을 더해 빈 리스트로 추가한다.
for col in range(M):
tmp.append(A[row][col] + B[row][col])
# 모든 열의 계산이 끝나면, 임시 행을 출력 행렬에 추가한다.
ans.append(tmp)
# 행 단위로 다음 줄로 넘어감
for row in range(N):
# 열 단위로 한 칸씩 띄워짐
for col in range(M):
print(ans[row][col], end = ' ')
print()
2566번 최댓값
배열의 행별로 최댓값을 구하고, 기존의 최댓값을 저장해둔 변수와 비교하여 새로운 것이 더 클 경우 값을 교체하고, 최댓값의 행과 열의 인덱스 값 +1 한 값을 최댓값의 행과 열의 변수에 저장한다.
A = []
# 입력 행렬 2차원 행렬 형태로 만드는 부분
for _ in range(9):
row = list(map(int, input().split()))
A.append(row)
# 최댓값 변수, 초기: 0, 문제에서 81개의 자연수 혹은 0이 주어진다고 했으므로
Max = 0
for r in range(9):
# 행별로 가장 큰 수를 tmp 변수에 저장한다.
tmp = max(A[r])
# 만약 기존 최댓값이 크다면 계속 진행한다.
if Max > tmp:
continue;
# 아니라면 최댓값 변수값을 변경하고
# 그 위치의 행과 열의 인덱스 값에 + 1한 것을 저장한다.
else:
Max = tmp
row = r + 1
col = A[r].index(tmp) + 1
print(Max)
print(row, col, sep = ' ')
10798번 세로 읽기
입력되는 문자열 중 가장 긴 것을 기준으로 for문을 돌린다. 문자열을 돌아가면 출력할 때 인덱스 오류가 나지 않도록 조건문을 걸어둔다. 주어진 문자열의 길이가 주어진 인덱스 번호보다 클 때만 출력하고 아닐 때는 그냥 지나가게 한다. 필요하지 않아 명시하지 않았지만, else: continue;와 같은 구문을 추가하여 과정을 명확하게 할 수는 있다.
# 문자열을 저장할 리스트
A = []
# 문자열 길이 중 가장 큰 값을 저장할 변수
L = 0
# 다섯줄 입력
for _ in range(5):
str = input()
# 주어진 문자열의 길이와 기존 문자열 길이 값 중 더 큰 것을 L에 다시 배정
L = max(L, len(str))
# 문자열 저장할 리스트에 추가
A.append(str)
# 입력 문자열 길이 중 가장 큰 것만큼 루프를 돌린다.
for i in range(L):
# 문자열들을 하나씩 돌아가며 출력한다.
for j in A:
# 만약 주어진 문자열의 길이가 인덱스 번호보다 크다면 출력
if i < len(j):
print(j[i], end = '')
2563번 색종이
종이의 영역을 100개짜리 0이 100개 모여있는 배열로 나타낼 수 있다. 주어진 x, y 좌표에 10을 더한만큼씩을 1로 바꾸어 중복으로 덮여도 똑같이 계산할 영역으로 두었다. 중첩 리스트는 내부의 독립적인 1차원 리스트들에 method를 활용할 수 있으므로 활용할 때 기억해두는 것이 좋다.
# 가로 세로 100인 흰 종이 표현, 0~99
A = [[0 for _ in range(100)] for _ in range(100)]
N = int(input())
for _ in range(N):
# 시작 x좌표 y좌표
x, y = map(int, input().split())
# 흰 종이 좌표가 0에서 시작하므로
# 검은 종이 좌표도 0부터 시작하는 것으로 바꾸기 위해 1을 뺀다.
x -= 1
y -= 1
# 검은 종이는 가로 10 세로 10
for w in range(x, x + 10):
for v in range(y, y + 10):
# 검다는 표현으로 1로 값을 바꿔줌
A[w][v] = 1
ans = 0
# 종이의 가로 한 줄씩 1의 갯수를 세어
# 전체 갯수 ans에 누적하여 저장한다.
for a in A:
ans += a.count(1)
print(ans)
반응형
'IT > 코테문제' 카테고리의 다른 글
[BAEKJOON] 9단계_약수, 배수와 소수 (0) | 2023.10.30 |
---|---|
[BAEKJOON] 8단계_일반 수학1 (0) | 2023.10.27 |
[Python] 문제 풀 때 요령_231014 (0) | 2023.10.25 |
[BAEKJOON] 6단계_심화1 (1) | 2023.10.24 |
[BAEKJOON] 5단계_문자열 (0) | 2023.10.23 |
Comments