일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 몽골 고기
- SWEA
- 여행
- 알고리즘
- 월드프렌즈 ICT 봉사단
- 헬스
- 아부다비
- 독일
- 파이썬
- 테를지국립공원
- 교환학생
- 칭기스칸 동상
- 초원
- ICT봉사단
- 백준
- 월드프렌즈
- 울란바토르
- 칭기즈칸
- 몽골 헬스장
- LG글로벌챌린저
- 한 줄로 서기
- 몽골요리
- 게르
- 담슈타트
- 코로나
- algorithm
- 소프트웨어 아카데미
- 테를지
- 몽골
- Python
Archives
- Today
- Total
맛있는물회
[맛있는물회] <SWEA알고리즘> 4864번 "특이한 자석" 본문
문제 조건
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWIeV9sKkcoDFAVH
Input
Output
생각한 아이디어
진짜 코드가 좀 복잡해지니깐 에러잡기가 너무너무 힘들다....
여러가지 if문으로 커버를 하니깐 어디가 에러난지 하나하나 디버깅하기가 너무 힘들었다.
왠지 더 좋은 코드가 많이 있을 듯 하다...
https://conak-diary.tistory.com/84
충격적인 코드...
100줄짜리 내 코드를 반틈으로 줄였다..
진짜 잘하시네... 충격 그 자체다..
소스코드
import copy
def rotation(mag, dir):
tmp = [0]*8
if dir == 1:
for i in range(1,8):
tmp[i] = mag[i-1]
tmp[0] = mag[7]
else:
for i in range(0,7):
tmp[i] = mag[i+1]
tmp[7] = mag[0]
return tmp
if __name__ == "__main__":
T = int(input())
for TC in range(T):
K = int(input())
MAP = [list(map(int,input().split())) for _ in range(4)]
rotate = [list(map(int,input().split())) for _ in range(K)]
for k in range(0,K):
pos = rotate[k][0]
dir = rotate[k][1]
if pos == 2: #2 - 3 - 4 & 2 - 1
flag = 0
if MAP[0][2] != MAP[1][6]: flag = 1
if MAP[1][2] != MAP[2][6]: #2,3
if MAP[2][2] != MAP[3][6]: #3,4
MAP[1] = rotation(MAP[1],dir)
MAP[2] = rotation(MAP[2],-dir)
MAP[3] = rotation(MAP[3],dir)
else:
MAP[1] = rotation(MAP[1],dir)
MAP[2] = rotation(MAP[2],-dir)
else:
MAP[1] = rotation(MAP[1],dir)
if flag == 1: #1,2
MAP[0] = rotation(MAP[0],-dir)
elif pos == 3: # 3 - 2 - 1 & 3 - 4
flag = 0
if MAP[2][2] != MAP[3][6]: flag = 1
if MAP[1][2] != MAP[2][6]: #2,3
if MAP[0][2] != MAP[1][6]: #1,2
MAP[2] = rotation(MAP[2],dir)
MAP[1] = rotation(MAP[1],-dir)
MAP[0] = rotation(MAP[0],dir)
else:
MAP[2] = rotation(MAP[2],dir)
MAP[1] = rotation(MAP[1],-dir)
else:
MAP[2] = rotation(MAP[2],dir)
if flag == 1: #3,4
MAP[3] = rotation(MAP[3],-dir)
elif pos == 1: #1 - 2 - 3 - 4
if MAP[0][2] != MAP[1][6]: #1,2
if MAP[1][2] != MAP[2][6]: #2,3
if MAP[2][2] != MAP[3][6]: #3,4
MAP[3] = rotation(MAP[3],-dir)
MAP[2] = rotation(MAP[2],dir)
MAP[1] = rotation(MAP[1],-dir)
MAP[0] = rotation(MAP[0],dir)
else:
MAP[2] = rotation(MAP[2],dir)
MAP[1] = rotation(MAP[1],-dir)
MAP[0] = rotation(MAP[0],dir)
else:
MAP[1] = rotation(MAP[1],-dir)
MAP[0] = rotation(MAP[0],dir)
else:
MAP[0] = rotation(MAP[0],dir)
elif pos == 4: #4 - 3 - 2 - 1
if MAP[2][2] != MAP[3][6]: #3,4
if MAP[1][2] != MAP[2][6]: #2,3
if MAP[0][2] != MAP[1][6]: #1,2
MAP[3] = rotation(MAP[3],dir)
MAP[2] = rotation(MAP[2],-dir)
MAP[1] = rotation(MAP[1],dir)
MAP[0] = rotation(MAP[0],-dir)
else:
MAP[3] = rotation(MAP[3],dir)
MAP[2] = rotation(MAP[2],-dir)
MAP[1] = rotation(MAP[1],dir)
else:
MAP[3] = rotation(MAP[3],dir)
MAP[2] = rotation(MAP[2],-dir)
else:
MAP[3] = rotation(MAP[3],dir)
answer = 0
j = 1
for i in range(0,4):
answer += MAP[i][0]*j
j *=2
print("#%d %d" %(TC+1,answer))
*파이썬 문법 정리
'IT > 알고리즘' 카테고리의 다른 글
[맛있는물회] <SWEA알고리즘> 4008번 "숫자 만들기" (0) | 2020.04.28 |
---|---|
[맛있는물회] <SWEA알고리즘> 2477번 "차량정비소" (0) | 2020.04.26 |
[맛있는물회] <백준 알고리즘> 10820번 "문자열 분석" (0) | 2020.04.23 |
[맛있는물회] <백준 알고리즘> 삼성기출 16234번 "인구 이동" (0) | 2020.04.21 |
[맛있는물회] <백준 알고리즘> 7576번 "토마토" (0) | 2020.04.17 |
Comments