땅지원
땅지원's Personal blog
땅지원
전체 방문자
오늘
어제
  • 전체 (353)
    • Frontend (2)
      • React (2)
    • Backend (90)
      • Java (16)
      • Python (19)
      • Spring (23)
      • Database (21)
      • Troubleshooting (8)
    • DevOps (27)
      • ELK (13)
    • CS (40)
    • OS (2)
      • Linux (2)
    • Algorithm (95)
      • concept (18)
      • Algorithm Problem (77)
    • 인공지능 (25)
      • 인공지능 (12)
      • 연구노트 (13)
    • 수업정리 (35)
      • 임베디드 시스템 (10)
      • 데이터통신 (17)
      • Linux (8)
    • 한국정보통신학회 (5)
      • 학술대회 (4)
      • 논문지 (1)
    • 수상기록 (8)
      • 수상기록 (6)
      • 특허 (2)
    • 삼성 청년 SW 아카데미 (6)
    • 42seoul (12)
    • Toy project (3)
    • 땅's 낙서장 (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 20.11.6 BB21플러스 온라인 학술대회
  • 20.10.30 한국정보통신학회 온라인 학술대회

인기 글

태그

  • I
  • D
  • 이것이 리눅스다 with Rocky Linux9
  • ㅗ
  • E

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
땅지원

땅지원's Personal blog

백준 11571 분수를 소수로(구현)
Algorithm/Algorithm Problem

백준 11571 분수를 소수로(구현)

2022. 5. 20. 16:30

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

 

11571번: 분수를 소수로

입력의 첫 번째 줄에는 테스트 케이스의 수 T (1 ≤ T ≤ 15,000)가 주어진다. 이후 각 테스트 케이스에 대해 한 줄에 분자와 분모 (0 ≤ 분자 < 1024, 0 < 분모 < 1024)가 공백으로 구분되어 정수로 주어진

www.acmicpc.net

개인적으로 엄청 어려운 문제였다.

처음에 접근한 방법은 소수점 아래의 숫자들을 문자열이라고 치고 반복적으로 나타나는 패턴을 찾기 위해 

브루트포스를 이용하거나 한번 나온 숫자가 뒤에 다시 나올 떄 조건을 두는 방식으로 했는데 잘못된 생각이였고 잘 풀리지 않았다.

분수를 소수로 바꾸는 과정은 위의 사진처럼 나눗셈을 하면서 나머지에 대해 처리를 해주면서 진행이 된다.

나눗셈을 하면서 나머지가 계속 나올텐데 한번 나온 나머지는 그다음부터도 똑같은 패턴으로 나눗셈이 진행되기 때문에 나눗셈을 하면서 나오는 나머지를 기억해줄 필요가 있다. 

 

나머지를 기억해줌과 동시에 그때까지의 몫을 기억한다면 확실한 풀이가 가능할 것이다.

 

최종적으로 Dictionary에 나머지를 key, 몫에 대한 값을 value로 지정하면 되는데 

value는 나눗셈의 결과인 몫을 새로운 list에 추가해주면서 그 리스트에 len()으로 해주었다.

t = int(input())
for _ in range(t):
    a,b = list(map(int,input().split()))
    temp = str(a//b) + '.'
    a %= b
    hist = dict()
    while True:
        a *= 10
        if a not in hist.keys():
            print(temp)
            hist[a] = len(temp)
            temp += str(a//b)
            a %= b
        else:
            print(hist)
            print(temp[:hist[a]] + '(' + temp[hist[a]:len(temp)]+ ')')
            break

 

 

 

 

 

 

 

 

 

 

'Algorithm > Algorithm Problem' 카테고리의 다른 글

백준 11000 강의실 배정(Heap, 우선순위 큐)  (0) 2022.05.22
백준 13900 순서쌍의 곱의 합(구현)  (0) 2022.05.20
백준 7662 이중 우선순위 큐(Heapq)  (0) 2022.05.12
백준 16928 뱀과 사다리 게임(BFS)  (0) 2022.05.10
백준 14500 테트로미노(Brute-Force, DFS)  (0) 2022.05.09
    'Algorithm/Algorithm Problem' 카테고리의 다른 글
    • 백준 11000 강의실 배정(Heap, 우선순위 큐)
    • 백준 13900 순서쌍의 곱의 합(구현)
    • 백준 7662 이중 우선순위 큐(Heapq)
    • 백준 16928 뱀과 사다리 게임(BFS)
    땅지원
    땅지원
    신입 개발자의 우당탕탕 기술 블로그

    티스토리툴바