시뮬레이션
주어진 상황을 잘 이해하고 이를 코드로 구현하는 과정
- 하나의 문제를 최대한 여러개로 분리하기
- 예외 처리가 필요하다면 독립 함수로 구현
문제풀이
- 배열 회전하기
def rotation(arr):
# 행과 열의 크기 구하기
rows = len(arr)
cols = len(arr[0])
# 새로운 2차원 배열 초기화
rotated_arr = [[0] * rows for _ in range(cols)]
# 시계 방향으로 90도 회전
for i in range(rows):
for j in range(cols):
rotated_arr[j][rows - 1 - i] = arr[i][j]
return rotated_arr
def solution(arr, n):
# n번 회전
for _ in range(n):
arr = rotation(arr)
return arr
- 두 행렬을 곱한 전치 행렬 만들기
def solution(matrix1, matrix2):
# 결과 행렬 초기화
result_matrix = [[0] * 3 for _ in range(3)]
# 행렬 곱셈 수행
for i in range(3):
for j in range(3):
for k in range(3):
result_matrix[i][j] += matrix1[i][k] * matrix2[k][j]
# 결과 행렬의 전치행렬 계산
result = [[result_matrix[j][i] for j in range(3)] for i in range(3)]
return result
- 이진 변환
주어진 이진 문자열 s를 "1"이 될 때까지 반복적으로 이진 변환을 적용하고, 각 단계에서 제거된 0의 개수와 변환 횟수를 계산하는 것
예시)
회차 | 이진변화이전 | 제거할 0의 개수 | 0 제거 후 길이 | 이진 변환 결과 |
1 | "110010101001" | 6 | 6 | "110" |
2 | "110" | 1 | 2 | "10" |
3 | "10" | 1 | 1 | "1" |
def solution(s):
# 초기화
transform = 0
zero = 0
# 1이 될때까지 반복
while s != "1":
# 제거할 0의 개수 계산
zero += s.count("0")
# 0을 제거한 후의 길이를 2진법으로 표현한 문자열로 변환
s = bin(s.count("1"))[2:]
transform += 1
return [transform, zero]
더보기
bin() 함수는 정수를 이진법으로 변환해주는 파이썬의 내장함수
ex) bin(10) -> ob1010
**"ob"는 이진수를 나타내는 접두사
ex) bin(10) -> ob1010
**"ob"는 이진수를 나타내는 접두사
'Study' 카테고리의 다른 글
[묘공단]파이썬 스터디 13주차 (0) | 2024.03.02 |
---|---|
[묘공단]파이썬 스터디 12주차 (0) | 2024.02.24 |
[묘공단]파이썬 스터디 8주차 (0) | 2024.01.19 |
[묘공단]파이썬 스터디 7주차 (1) | 2024.01.13 |
[묘공단]파이썬 스터디 6주차 (0) | 2024.01.06 |