[C++] 16953번: A -> B

2023. 10. 15. 19:51·[게임 개발] 알고리즘 공부/백준

링크

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

 

16953번: A → B

첫째 줄에 A, B (1 ≤ A < B ≤ 109)가 주어진다.

www.acmicpc.net

문제

입출력 예제

코드

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>

using namespace std;

int main(void)
{
    int answer = 1;

    string aNum, bNum;
    cin >> aNum >> bNum;

    while (stoi(aNum) < stoi(bNum))
    {
        if (bNum[bNum.size() - 1] == '1')
        {
            bNum.erase(bNum.begin() + bNum.size() - 1);
        }
        else if(stoi(bNum) % 2 == 0) 
        {
            bNum = to_string(stoi(bNum) / 2);
        }
        else
        {
            break;
        }
        
        answer++;
    }

    if (aNum == bNum)
        cout << answer << endl;
    else
        cout << "-1" << endl;

    return 0;
}

풀이

두가지 방법을 이용해서 수 A를 B로 만드는것이 목표입니다.

 

가능한 연산은 두가지 입니다.

1. A에 2를 곱하기

2. A의 맨 뒤에 1을 추가하기

 

해당 두 연산을 이용해서 A->B로 만드는 것이 아닌 B->A로 하는것이 더 간단하다고 생각했습니다.

1. B가 1로 끝난다면 맨 마지막 1을 제거하기.
2. B를 2로 나누었을 때 나머지가 0이라면 2로 나누기

 

예외사항이 있다면 13과 같이 2로 딱 나누어 떨어지지 않거나,
끝까지 연산을 했지만 A와 같아지지 않고 A보다 작아진 경우
A->B가 불가능하다고 판단하여 -1을 출력하게 됩니다.

저작자표시 (새창열림)

'[게임 개발] 알고리즘 공부 > 백준' 카테고리의 다른 글

[C++] [골드 5] 1092번: 배  (0) 2023.10.16
[C++] [실버 1] 9009번: 피보나치  (1) 2023.10.15
[C++] 1541번: 잃어버린 괄호  (1) 2023.10.15
[C++] 5568번: 카드 놓기  (0) 2023.08.13
[C++] 1182번: 부분수열의 합  (0) 2023.08.12
'[게임 개발] 알고리즘 공부/백준' 카테고리의 다른 글
  • [C++] [골드 5] 1092번: 배
  • [C++] [실버 1] 9009번: 피보나치
  • [C++] 1541번: 잃어버린 괄호
  • [C++] 5568번: 카드 놓기
람팜팜~
람팜팜~
:)
  • 람팜팜~
    RumPumPum
    람팜팜~
  • 전체
    오늘
    어제
    • 전체 (123)
      • 🎵 일상 (2)
      • JAVA (5)
        • 김영한의 자바 입문 (3)
      • JavaScript (12)
      • ---------------------------.. (0)
      • [게임 개발] 포트폴리오 (2)
        • RPG (1)
        • 슈터-플랫포머 (1)
      • [게임 개발] 개발 일지 (28)
        • RPG (25)
        • TopDownProject (3)
      • [게임 개발] 언리얼엔진 공부 (9)
        • 이득우의 언리얼 프로그래밍 Part.1 (6)
        • 이득우의 언리얼 프로그래밍 Part.2 (1)
        • 개인 메모 (2)
      • [게임 개발] 알고리즘 공부 (60)
        • 프로그래머스 (8)
        • 백준 (52)
        • 개인 메모 (0)
      • [게임 개발] CPP 공부 (2)
        • 이것이 C++ 이다 (1)
        • Effective C++ (0)
        • Effective Modern C++ (0)
        • 홍정모 그래픽스 새싹코스 (1)
      • [게임 개발] CS 공부 (3)
  • 블로그 메뉴

    • 링크

      • Github
    • 공지사항

    • 인기 글

    • 태그

      스레드
      dp
      투포인터
      문자열
      context switching
      메모리구조
      데드락
      프로세스
      dfs
      그리디
      우선순위 큐
      해시
      역참조
      브루트포스
      참조자
      누적합
      슬라이딩 윈도우
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    람팜팜~
    [C++] 16953번: A -> B
    상단으로

    티스토리툴바