본문 바로가기

PS/BOJ : 단계별로 풀어보기

백준 [단계별로 풀어보기]: (7단계) "2차원 배열", python

반응형

백준 [단계별로 풀어보기]: (7단계) "2차원 배열", python

 

1. 문제번호 및 정답비율

7단계 2차원 배열 : 문제번호  및 정답 비율

2. 문제별 필요 지식 및 풀이 포인트

더보기

# 1. 2738 행렬 덧셈


# 2. 2566 최댓값

다시풀기

런타임에러발생가능


# 3. 10798 세로읽기

다시풀기

1. 2차원배열 선언 방법 및 2.ouf of range설정(+조건문추가)


# 4. 2563 색종이

색종이 있는 곳은 1로, 없는 곳은 0으로


3. 문제별 풀이 코드

# 1. 2738 행렬 덧셈
n, m = map(int, input().split())
m_a = []
m_b = []
for i in range(n):
    a = list(map(int, input().split()))
    m_a.append(a)
for i in range(n):
    b = list(map(int, input().split()))
    m_b.append(b)
#print(m_a)
#print(m_b) #ex) [[1,2,3], [2,3,4], [3,4,5]]
for i in range(n):
    for j in range(m):
        result = m_a[i][j] + m_b[i][j]
        print(result, end=' ') # 4 4 4 / 6 6 6 / 5 6 100
    print() # 3x3행렬 모양으로 출력
    

# 2. 2566 최댓값
		'''다시풀기'''
'''런타임에러
column = []
for _ in range(1,10):
    row = list(map(int, input().split()))
    column.append(row)

for i in range(1,10):
    for j in range(1,10):
        result = map(list, column[i][j])
print(max(result), i, j)'''

nums = 0
col = 0
row = 0
for i in range(9):
    line = list(map(int, input().split()))
    if max(line) > nums:
        nums = max(line)
        col = i
        row = line.index(nums)
print(nums)
print(col+1,row+1)


# 3. 10798 세로읽기
            '''다시풀기'''
            '''1. 2차원배열 선언 방법 / 2.ouf of range설정(+조건문추가)'''
sentence = []
for i in range(5):
    sentence.append(input())
#print(sentence) #['abc','def', ... ,]
#sentence[0] # 'abc'
#sentence[0][0] #'a' 1차원배열도, 객체[i][j]꼴로 호출 가능

result = ""
for i in range(15):
    for j in range(5):
        if i < len(sentence[j]): # print(sentence[j][i]시, out of range 발생
            result += sentence[j][i]
print(result)


# 4. 2563 색종이
'''색종이 있는 곳은 1로, 없는 곳은 0으로'''
paper = [[0 for i in range(100)] for j in range(100)] #도화지크기 100x100, 0으로 초기화

n = int(input()) #색종이 수
for i in range(n):
    x,y = map(int, input().split()) #(x,y): 3,7 / 15,7 / 5,2
    
    for i in range(x, x+10):
        for j in range(y, y+10):
            paper[i][j] = 1
#paper[3].count(1) #10
result = 0
for i in range(100):
    result += paper[i].count(1) #paper[i].count(1) 원소 중에서 1인 것을 카운트한다.

print(result) #색종이 너비 합
반응형