일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- SWEA
- UML
- SSAFY
- 파이썬
- 코딩테스트
- 백준 2003
- dfs
- 삼성 부트캠프
- 우테코
- 백준
- 삼성 청년 sw아카데미
- 취뽀
- 정보처리기사
- 마이스터고
- 13기
- 코테
- 비전공자
- 디자인패턴
- 프리코스
- 싸피 13기
- 싸피
- 코딩
- 정처기
- 삼성
- 우테코 7기
- 삼성 청년 SW 아카데미
- 부트캠프
- 우테코 프리코스
- 삼성청년SW아카데미
- 개발자
Archives
- Today
- Total
룰루코딩
백준 1212 1373 1252 1550 11005 13877 3460 진수 관련 문제 본문
1212 8진수 2진수
https://www.acmicpc.net/problem/1212
print(bin(int(input(),8))[2:])
int(input(),8)는 8 진수로 입력을 받고, bin()을 이용해 2진수로 변환하여 출력한 다음, [2:]를 이용해 맨 앞 2자리에 이진법을 의미하는 0b를 제거해 2번째 자리부터 출력될 수 있도록한다.
1373 2진수 8진수
https://www.acmicpc.net/problem/1373
print(oct(int(input(), 2))[2:])
oct()를 이용해 정수를 0o로 시작하는 8진수 문자열로 변환, oct(n)을 출력하면 앞에 0o 문자가 붙어서 2번째 인덱스부터 출력해주면 된다.
1252 이진수 덧셈
https://www.acmicpc.net/problem/1252
x, y = input().split()
print(bin(int(x,2) + int(y,2))[2:])
int(x, 2)로 입력받은 이진수를 정수(10진수)로 바꾸고, 다시 bin()을 통해 2진수로 바꾸어준다, 마지막 [2:]한 이유는 10진수를 2진수로 변환하는 함수를 쓰면 앞에 0b가 붙기 때문에 이부분을 지우기 위해 사용
1550 16진수
https://www.acmicpc.net/problem/1550
print(int(input(), 16))
내장함수 int를 사용하면 특정 진수의 문자열을 10진수로 쉽게 변환
11005 진법 변환 2
https://www.acmicpc.net/problem/11005
N, B = map(int, input().split())
s = ''
arr = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
while N:
s += str(arr[N%B])
N //= B
print(s[::-1])
- s: 결과를 저장할 빈 문자열
- arr: 0부터 35까지의 숫자에 해당하는 문자들이 들어 있는 문자열, 10진법을 넘어선 진법(11진법 이상)에서 사용
- N % B: N을 B로 나눈 나머지 구하고, 이 나머지가 새로운 자릿수에 해당하는 값, arr[N%B]로 나머지에 해당하는 문자를 가져와 s에 추가
- N //= B: N을 B로 나눈 몫을 N에 다시 저장, 반복문을 계속 진행. 자릿수를 한 칸씩 내려가게 함
- s[::-1]: 문자열 s 뒤집어서 출력. s에는 나머지들이 역순으로 저장돼서 뒤집어 올바른 순서로 출력
13877 이건 무슨 진법이지?
https://www.acmicpc.net/problem/13877
for _ in range(int(input())):
i, n = input().split()
o = int(n, 8) if max(list(n)) < '8' else 0
print(int(i), o, int(n), int(n, 16))
3460 이진수
https://www.acmicpc.net/problem/3460
T = int(input())
for _ in range(T):
N = bin(int(input()))[2:]
for i in range(len(N)):
if N[-i-1] == '1':
print(i, end = ' ')
for _ in range(int(input())):
n = int(input())
i = 0
while n > 0:
if n%2 == 1:
print(i, end=' ')
n = n//2
i += 1
'백준' 카테고리의 다른 글
18870 좌표 압축 (0) | 2025.01.20 |
---|---|
백준 9461 파도반수열 (1) | 2025.01.18 |
백준 9095 1, 2, 3 더하기 (2) | 2025.01.04 |
백준 1927 최소 힙 (2) | 2025.01.03 |
백준 2108 통계학 (0) | 2024.11.22 |