Programming/CodingTest
[코드트리] 삼성 SW 역량테스트 | 2017년 하반기 오후 1번 | 돌아가는 팔각 의자
콩순이컴퓨터
2025. 6. 4. 04:23
https://www.codetree.ai/ko/frequent-problems/samsung-sw/problems/rounding-eight-angle/description
코딩테스트 기출 문제 설명: 돌아가는 팔각 의자 | 코드트리
코딩테스트 기출 문제 돌아가는 팔각 의자의 상세 설명입니다. 문제 요구사항을 정확히 파악하고 효율적인 알고리즘을 설계해보세요.
www.codetree.ai
- 문제유형 : 시뮬레이션
- 난이도 : L11
- 정답률 : 59%
풀이방법
코드
c = [[]]
for _ in range(4):
c.append(list(map(int, input())))
k = int(input())
#[회전시킬 의자 번호 n, 방향 d]
for _ in range(k):
cur_n, cur_d = map(int, input().split())
if cur_n == 1:
rotate = [] #[rotate_n, rotate_d]
rotate.append([cur_n, cur_d])
while cur_n < 4:
if c[cur_n][2] != c[cur_n+1][6]:
rotate.append([cur_n+1, -cur_d])
cur_n += 1
cur_d = -cur_d
else:
break
elif cur_n == 2:
rotate = []
rotate.append([cur_n, cur_d])
if c[1][2] != c[2][6]:
rotate.append([1, -cur_d])
while cur_n < 4:
if c[cur_n][2] != c[cur_n+1][6]:
rotate.append([cur_n+1, -cur_d])
cur_n += 1
cur_d = -cur_d
else:
break
elif cur_n == 3:
rotate = []
rotate.append([cur_n, cur_d])
if c[3][2] != c[4][6]:
rotate.append([4, -cur_d])
while cur_n > 1:
if c[cur_n-1][2] != c[cur_n][6]:
rotate.append([cur_n-1, -cur_d])
cur_n -= 1
cur_d = -cur_d
else:
break
elif cur_n == 4:
rotate = []
rotate.append([cur_n, cur_d])
while cur_n > 1:
if c[cur_n-1][2] != c[cur_n][6]:
rotate.append([cur_n-1, -cur_d])
cur_n -= 1
cur_d = -cur_d
else:
break
for n, d in rotate:
if d==1:
new_c = [c[n][-1]]
new_c += c[n][:-1]
c[n] = new_c
elif d==-1:
new_c = c[n][1:]
new_c.append(c[n][0])
c[n] = new_c
result = 0
for i in range(1, len(c)):
if c[i][0] == 1:
result += 2**(i-1)
print(result)