- 문제
두 리스트 합치기 - 탐색

- 코드
n=int(input())
a=list(map(int,input().split()))
m=int(input())
b=list(map(int,input().split()))
p1=0
p2=0
c=[]
while p1<n and p2<m:
if a[p1]<=b[p2]:
c.append(a[p1])
p1+=1
else:
c.append(b[p2])
p2+=1
if p1<n:
c=c+a[p1:]
if p2<m:
c=c+b[p2:]
print(c)
- 설명 및 개념
💡 p1과 p2를 포인터로 사용하여 문제를 해결
- 문제
격자판 최대합 - 시뮬레이션

- 코드
n=int(input())
a=[list(map(int,input().split())) for _ in range(n)]
large=-21345000
for i in range(n):
sum1=0
sum2=0
for j in range(n):
sum1+=a[i][j]
if sum1 > large:
large = sum1
sum2+=a[j][i]
if sum2 > large:
large = sum2
for i in range(n):
sum3=0
sum4=0
sum3+=a[i][i]
sum4+=a[i][n-i-1]
if sum3 > large:
large = sum3
if sum4 > large:
large = sum4
print(large)
- 설명 및 개념
💡 리스트를 요소로 가지는 리스트를 생성하기 위해 a=[ list(map(int,input().split())) for _ in range(n)] 과 같은 방법을 사용했다
[ [10, 13, 12], [11, 12, 13], [65, 65, 45] ] 과 같은 리스트가 만들어진다
- 문제
사과나무 - 시뮬레이션
- 코드
n=int(input())
a=[list(map(int,input().split())) for _ in range(n)]
res=0
s=e=n//2
for i in range(n):
for j in range(s,e+1):
res+=a[i][j]
if i>n//2:
s+=1
e+=1
else:
s-=1
e-=1
print(res)
- 문제
곳감(모래시계) - 시물레이션
- 코드
n=int(input())
a=[list(map(int,input().split())) for _ in range(n)]
m=int(input())
for i in range(m):
h,b,k=map(int,input().split())
for _ in range(k):
if b==0:
a[h-1].append(a[h-1].pop(0))
else:
a[h-1].insert(0,a[h-1].pop())
res=0
s=0
e=n-1
for i in range(n):
for j in range(s,e+1):
res+=a[i][j]
if i<n//2:
s+=1
e-=1
else:
s-=1
e+=1
print(res)
- 설명
💡 pop(0) : 리스트의 제일 왼쪽 값을 뺀다
💡 append(값) : 값을 리스트의 제일 뒤에 넣는다
💡 insert( 인덱스, 값 ) : 값을 리스트의 원하는 인덱스에 넣는다
'코딩테스트' 카테고리의 다른 글
코테 스터디 20번째 TIL : 문제 풀이 (1) | 2024.09.18 |
---|---|
코테 스터디 19번째 TIL : 시뮬레이션 dx,dy 문제 풀이 (1) | 2024.09.11 |
99클럽 코테 스터디 40일차 TIL : 문제 풀이 (1) | 2024.08.29 |
99클럽 코테 스터디 38일차 TIL : 완전탐색 문제 풀이 (0) | 2024.08.29 |
99클럽 코테 스터디 37일차 TIL : DFS 문제 풀이 (0) | 2024.08.27 |