예꾸
개발자국
예꾸
전체 방문자
오늘
어제
  • 분류 전체보기 (111)
    • CS (6)
      • 데이터베이스 (5)
      • 운영체제 (0)
      • Computer Architecture (1)
    • 끄적끄적 (4)
    • 이론 (29)
      • 알고리즘 (18)
      • 자료구조 (4)
      • WEB (2)
      • JS (2)
      • Git (2)
      • Python (1)
    • 면접준비 (3)
      • Vue (1)
      • Design Pattern (1)
      • Frontend (1)
    • 개발기술 (20)
      • Git PUSH 자동화 (3)
      • VUE (1)
      • Linux (2)
      • MERN Stack (2)
      • React기반 Gatsby로 블로그 개발하기 (6)
      • Typescript (0)
      • 감정일기장(React) (3)
      • CI CD (3)
    • 코드트리 (6)
      • 블로그 챌린지 (3)
      • 모의시험 (3)
    • 취업준비 (3)
      • 코딩테스트 후기 (3)
    • 프로그래머스 (8)
      • SQL (7)
      • 알고리즘 (1)
    • 백준 (31)
      • 그리디(탐욕법) (6)
      • 구현 (5)
      • 그래프탐색(dfs, bfs) (5)
      • 완전탐색 (5)
      • 문자열 (5)
      • 누적합 (2)
      • DP(다이나믹 프로그래밍) (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • JS
  • javascript
  • React
  • gatsby
  • 프로그래머스 SQL
  • 백준 완전탐색
  • 백준 문자열
  • 자료구조
  • 알고리즘
  • 운영체제
  • 백준 그래프탐색
  • 백준 그리디
  • 코딩테스트
  • 코드트리
  • 컴퓨터 시스템의 구조
  • 프로그래머스
  • 코딩테스트실력진단
  • 코드트리 추천
  • 백준 구현
  • 나만의공부노트

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
예꾸

개발자국

[백준 1212] 8진수 2진수 - python
백준/구현

[백준 1212] 8진수 2진수 - python

2021. 6. 5. 20:24

https://www.acmicpc.net/problem/1212

 

1212번: 8진수 2진수

첫째 줄에 8진수가 주어진다. 주어지는 수의 길이는 333,334을 넘지 않는다.

www.acmicpc.net

 

문제 풀이

시간초과 풀이

  • 8진수에서 2진수로 변환하는 방법을 찾아보니 8진수를 한자리씩 끊어 그 수를 2진수로 바꾸면 된다고 한다
  • 예시 ) 314 => 3 = 011 / 1 = 001 / 4 = 100 ==> 011001100 => 11001100
  • 구현 문제라 이를 코드로 구현했는데 시간 초과가 떴다,,
# 8진수 => 2진수
# 8진수 1개씩 끊어 2진수로 만들어주기
# ex ) 3 => 011, 1 => 001, 4 => 100

n = input() # 8진수
result = []
answer = ''

for num in n: # 수의 길이 333334가 최대,,,
    #print(num)
    for _ in range(3):
        result.append(str(int(num) % 2))
        num = int(num) // 2
    result = result[::-1]
    #print(result)
    answer += ''.join(result)
    result = []

print(int(answer))

 

다른사람 풀이

  • 다른 사람풀이를 보니 파이썬에는 8진수를 2진수로 바꿔주는 내장함수가 존재했다(2진수 => 8진수도 존재)
  • bin() 함수를 사용하면 x진수를 2진수로 변환할 수 있다 (8진수 변환함수 = oct())
  • 또한 int(input(), 8) 로 입력받을 시 8진수로 입력받을 수 있다
  • [2:]를 한 이유는 bin()사용시 '0bxxxx'로 나오기 때문에 0b를 잘라주기 위해 사용했다
print(bin(int(input(), 8))[2:])

 

    '백준/구현' 카테고리의 다른 글
    • [백준 20546] 기적의 매매법 - python
    • [백준 5597] 과제 안 내신 분..? - python
    • [백준 20053] 최소, 최대 2
    • [백준 1913] 달팽이 - python
    예꾸
    예꾸
    비전공자 옒의 개발이야기💻

    티스토리툴바