Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- Docker
- 우분투
- Git
- 편스토랑
- gs25
- 코로나19
- PYTHON
- 프로그래머스 파이썬
- 데이콘
- programmers
- 백준
- ubuntu
- 프로그래머스
- leetcode
- 맥북
- 더현대서울 맛집
- github
- SW Expert Academy
- 자연어처리
- 파이썬
- Baekjoon
- Real or Not? NLP with Disaster Tweets
- 금융문자분석경진대회
- 캐치카페
- 편스토랑 우승상품
- ChatGPT
- dacon
- AI 경진대회
- Kaggle
- hackerrank
Archives
- Today
- Total
솜씨좋은장씨
[BaekJoon] 3460번 : 이진수 (Python) 본문
728x90
반응형
코딩 1일 1문제! 오늘의 문제는 백준의 3460번 이진수 입니다.
👨🏻💻 문제 풀이
10진수를 입력받으면 이를 이진수로 바꾼 뒤에 이진수 속에 있는 1의 위치출력하는 문제입니다.
먼저 예제 입력과 예제 출력을 확인해보면 13을 입력했을때 0 2 3 이라는 값이 나오는 것을 볼 수 있습니다.
13 을 이진수로 바꾸어보면 1011이 됩니다.
오른쪽 부터 1이 나오는 위치를 파악하고 첫 시작점의 위치를 0이라고 하면
13을 바꾼 이진수 1 0 1 1
순서 3 2 1 0
0 2 3 이 되는겁니다.
이를 코드로 구현해보면
N = int(input())
먼저 이진수로 바꿀 10진수를 하나 입력 받고
bin_N = list(bin(N)[2:][::-1])
Python의 내장함수인 bin을 활용하여 해당 정수를 이진수로 바꾸어줍니다.
그런데 bin을 활용하여 10진수를 이진수로 바꾸면
변환한 이진수 값 앞에 0b가 달라붙어 [2:] 를 활용하여 0b를 제외한 값만 남겨줍니다.
bin(13) -> 0b1101 -> bin(13)[2:] -> 1101
그 다음 1이 나오는 순서를 뒤에서 부터 찾으므로 이를 거꾸로 뒤집어 줍니다.
bin(13) -> 0b1101 -> bin(13)[2:] -> 1101 -> bin(13)[2:][::-1] -> 1011
뒤집을 때는 [::-1]을 활용하여 뒤집어 줍니다.
그 다음 해당 값을 list로 바꾸어줍니다.
num_idx = []
for idx, num in enumerate(bin_N):
if num == '1':
num_idx.append(str(idx))
그 다음 하나씩 값을 꺼내오는데 이때 위치 즉 idx 값을 알아야하므로 enumerate를 활용합니다.
꺼낸 값이 '1' 일때 만 num_idx 리스트에 담아준 뒤에
" ".join(num_idx)
위와 같이 리스트 속 값을 " " ( 공백 ) 을 기준으로 join 하여 문자열로 만든 값을 정답으로 합니다.
전체 코드는 아래를 참고해주세요.
👨🏻💻 코드 ( Solution )
def binary_one_position(N):
num_idx = []
bin_N = list(bin(N)[2:][::-1])
for idx, num in enumerate(bin_N):
if num == '1':
num_idx.append(str(idx))
return " ".join(num_idx)
if __name__ == "__main__":
for _ in range(int(input())):
n = int(input())
print(binary_one_position(n))
'Programming > 코딩 1일 1문제' 카테고리의 다른 글
[BaekJoon] 18108번 : 1998년생인 내가 태국에서는 2541년생?! (Python) (0) | 2022.01.16 |
---|---|
[BaekJoon] 2869번 : 달팽이는 올라가고 싶다 (Python) (0) | 2022.01.15 |
[BaekJoon] 9085번 : 더하기 (Python) (0) | 2022.01.13 |
[BaekJoon] 2480번 : 주사위 세개 (Python) (0) | 2022.01.12 |
[BaekJoon] 5596번 : 시험 점수 (Python) (0) | 2022.01.11 |
Comments