코딩테스트/Python
코딩테스트 3. 탐색 & 시뮬레이션 (1)
star빛
2022. 6. 3. 21:44
1. 회문 문자열
import sys
sys.stdin=open("pythonalgorithm/섹션 3/1. 회문 문자열 검사/in3.txt","rt")
n=int(input())
#방법1
for i in range(n):
s=input()
s=s.upper()
size=len(s)
for j in range(size//2):
if s[j]!=s[-1-j]:
print("#%d NO" %(i+1))
break
else:
print("#%d YES" %(i+1))
2. 숫자만 추출
import sys
sys.stdin=open("pythonalgorithm/섹션 3/2. 숫자만 추출/in1.txt", "rt")
s=input() # string은 그냥 input으로 받기
res=0
for x in s:
if x.isdecimal():
res=res*10+int(x)
print(res)
cnt=0 #약수의 개수
for i in range(1, res+1):
if res%i==0:
cnt+=1
print(cnt)
3. 카드 역배치
import sys
sys.stdin=open("pythonalgorithm/섹션 3/3. 카드 역배치/in1.txt","rt")
a=list(range(21))
for _ in range(10):
s, e=map(int, input().split())
for i in range((e-s+1)//2):
a[s+i], a[e-i]=a[e-i], a[s+i]
a.pop(0) #0번 인덱스를 pop해라.
for x in a:
print(x, end=' ')
4. 두 리스트 합치기
n=int(input())
a=list(map(int, input().split()))
m=int(input())
b=list(map(int, input().split()))
p1=p2=0 #포인터변수 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:]
for x in c:
print(x, end=' ')
5. 수들의 합
import sys
sys.stdin=open("pythonalgorithm/섹션 3/5. 수들의 합/in1.txt", "rt")
n, m=map(int, input().split())
a=list(map(int, input().split()))
lt=0
rt=1
tot=a[0]
cnt=0
while True:
if tot<m:
if rt<n:
tot+=a[rt]
rt+=1
else:
break
elif tot==m:
cnt+=1
tot-=a[lt]
lt+=1
else:
tot-=a[lt]
lt+=1
print(cnt)
6. 격자판 최대합
n=int(input())
a=[list(map(int, input().split())) for _ in range(n)] # 2차원 리스트 생성
largest=-2147000000
for i in range(n):
sum1=sum2=0
for j in range(n):
sum1+=a[i][j]
sum2+=a[j][i]
if sum1>largest:
largest=sum1
if sum2>largest:
largest=sum2
sum1=sum2=0
for i in range(n):
sum1+=a[i][i]
sum2+=a[i][n-i-1]
if sum1>largest:
largest=sum1
if sum2>largest:
largest=sum2
print(largest)
7. 사과나무(다이아몬드)
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)
8. 곶감(모래시계)
import sys
sys.stdin=open('pythonalgorithm/섹션 3/8. 곳감/in1.txt','rt')
n=int(input())
a=[list(map(int, input().split())) for _ in range(n)]
m=int(input())
for i in range(m):
h, t, k=map(int, input().split())
if t==0:
for _ in range(k):
a[h-1].append(a[h-1].pop(0)) # 하나의 회전을 k번 하겠다.
else:
for _ in range(k):
a[h-1].insert(0, a[h-1].pop()) # 하나의 회전을 k번 하겠다.
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)
출처 : 인프런 강의
강의명 : 파이썬 알고리즘 문제풀이 (코딩테스트 대비)