Skip to content

Commit 39d8c20

Browse files
authored
Merge pull request #68 from 24-Algorithm/minjeong
Minjeong / 10월 2주차 / 3문제
2 parents ec280ad + 5c53000 commit 39d8c20

File tree

3 files changed

+55
-0
lines changed

3 files changed

+55
-0
lines changed
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
D = int(input()) # 산책할 총 시간 D분
2+
dp = [0] * 8 # 건물 8개에 대해 경로 수를 저장할 배열 초기화
3+
dp[0] = 1 # 정보과학관(0번 건물)에서 출발하므로 초기값은 1
4+
5+
# D분 동안 경로 수를 계산
6+
for i in range(D):
7+
tmp = [0] * 8 # 이번 시간의 경로 수를 임시 저장할 배열
8+
9+
# 각 건물에 대해 이전 시간에 가능한 경로 수를 누적
10+
tmp[0] = dp[1] + dp[2] # 정보과학관으로 가는 경로
11+
tmp[1] = dp[0] + dp[2] + dp[3] # 전산관으로 가는 경로
12+
tmp[2] = dp[0] + dp[1] + dp[3] + dp[4] # 미래관으로 가는 경로
13+
tmp[3] = dp[1] + dp[2] + dp[4] + dp[5] # 신앙관으로 가는 경로
14+
tmp[4] = dp[2] + dp[3] + dp[5] + dp[6] # 한경직기념관으로 가는 경로
15+
tmp[5] = dp[3] + dp[4] + dp[7] # 형남공학관으로 가는 경로
16+
tmp[6] = dp[4] + dp[7] # 진리관으로 가는 경로
17+
tmp[7] = dp[5] + dp[6] # 학생회관으로 가는 경로
18+
19+
# tmp에 저장된 값을 dp로 옮기며, 큰 수를 방지하기 위해 모듈러 연산
20+
for i in range(8):
21+
dp[i] = tmp[i] % 1000000007
22+
23+
# D분 후에 다시 정보과학관(0번 건물)에 도착하는 경우의 수 출력
24+
print(dp[0])
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import sys
2+
input = sys.stdin.readline
3+
4+
n = int(input()) # 10진수
5+
result = '' # -2진법 숫자를 저장할 문자열
6+
7+
# 예외처리 / 0인 경우 바로 종료
8+
if n == 0:
9+
print(0)
10+
exit()
11+
12+
# n이 0이 될 때까지 반복
13+
while n != 0:
14+
if n % (-2) == 0:
15+
result += '0'
16+
n //= (-2)
17+
else:
18+
result += '1'
19+
n = n // (-2) + 1
20+
21+
print(result[::-1])
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import sys
2+
input = sys.stdin.readline
3+
4+
li = list(map(int, input().split()))
5+
6+
while li != [1, 2, 3, 4, 5]: # 최종적으로 1, 2, 3, 4, 5가 될 때까지 반복
7+
for i in range(4): # 0번 인덱스부터 3번 인덱스까지 인접한 두 조각 비교
8+
if li[i] > li[i + 1]: # 앞의 조각이 뒤의 조각보다 크면 교환
9+
li[i], li[i + 1] = li[i + 1], li[i]
10+
print(' '.join(map(str, li))) # 교환이 발생할 때마다 출력

0 commit comments

Comments
 (0)