Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- Algorithm
- BFS
- generic class
- JPA
- 공개키 암호화
- 가상컴퓨팅
- dfs
- python
- 알고리즘
- dbms
- cloud computing
- Java
- jsp
- Queue
- 클라우드 컴퓨팅
- Stack
- JDBC
- javascript
- 코딩테스트
- DB
- data structure
- 생성자
- 암호학
- 코테
- spring
- sql
- 크루스칼
- MVC
- 자바의정석
- 자료구조
Archives
- Today
- Total
PLOD
[python] Simulation and Notation 본문
1. 흐른 시간 계산
2시 5분에서 4시 1분이 되려면 몇 분이 흘러야 하는지를 어떻게 계산해 볼 수 있을까? 단순히
다음과 같이 2시 5분에서 시작하여 1분 단위로 시뮬레이션을 하며 60분이 되면 시간을 늘리고
분을 다시 0으로 맞추는 식으로 진행해볼 수 있다.
hour, mins = 2, 5
elapsed_time = 0
while True:
if hour == 4 and mins == 1:
break
elapsed_time += 1
mins += 1
if mins == 60:
hour += 1
mins = 0
print(elapsed_time)
2. 흐른 날짜 계산
2월 5일에서 4월 1일이 되려면 몇 일이 흘러야 하는지를 어떻게 계산해 볼 수 있을까?
윤년이 아니라고 가정하고 2월 5일에서 시작하여 1일 단위로 시뮬레이션을 하며, 해당 월에
있는 일 수 를 넘어가게 되면 그 다음 달로 넘기고 일자를 다시 1로 맞추는 식으로 진행해볼 수 있다.
month, day = 2,5
elapsed_days = 0
num_of_days = [0,31,28,31,30,31,30,31,31,30,31,30,31]
while True :
if month == 4 and day == 1 :
break
elapsed_days += 1
day +=1
if day > num_of_days[month] :
month += 1
day = 1
print(elapsed_days)
1. 2진수 계산
다음과 같이 숫자 29를 계속 2로 나눠주며 해당 몫과 나머지를 쭉 적어주는 식으로 이진법을 만들어 볼 수 있다.
지금까지 나왔던 나머지들을 거꾸로 순서대로 적어주면 이진법이 완성된다.
n = 29
digits = []
while True:
if n < 2:
digits.append(n)
break
digits.append(n % 2)
n //= 2
# print binary number
for digit in digits[::-1]:
print(digit, end="")
2. 2진수를 10진수로 변환
이진수 11101을 10진법으로 표현하면 오른쪽 방향으로 한칸씩 움직이며 간간하게 구해볼 수 있다.
아이디어는 num을 0번 index부터 i번 index까지 10진법으로 변환한 값이라 생각해보자 그러면 num 값은
i가 증가함에 따라 다음과 같이 변해야 한다.
num = num * 2 + binary[i]
'computer science > Algorithm | Datastructure' 카테고리의 다른 글
[Algorithm] Search(탐색) (0) | 2023.07.05 |
---|---|
[Algorithm] sort(정렬 알고리즘) (0) | 2023.06.30 |
[Algorithm] recursive(재귀 알고리즘) (0) | 2023.05.30 |
[Algorithm] 기초 수학 구현하기 (0) | 2023.05.17 |
[python] 코딩테스트 skill (0) | 2023.05.16 |
Comments