백준 문제풀이

1755번 : 숫자놀이

하다블 2022. 8. 4. 18:12
반응형

문제는 다음과 같습니다.

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

 

1755번: 숫자놀이

79를 영어로 읽되 숫자 단위로 하나씩 읽는다면 "seven nine"이 된다. 80은 마찬가지로 "eight zero"라고 읽는다. 79는 80보다 작지만, 영어로 숫자 하나씩 읽는다면 "eight zero"가 "seven nine"보다 사전순으로

www.acmicpc.net

 

풀이 코드는 다음과 같습니다.

#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;

int main()
{
  string s[10]={"zero","one","two","three","four","five","six","seven","eight","nine"};
  int a,b;
  cin>>a>>b;
  vector<pair<string, int>>v;
  for(int i{a};i<=b;i++)
    {
      string tmp{""};
      if(i>=10)
      {
        tmp=s[i/10]+" "+s[i%10];
      }
      else
      {
        tmp=s[i%10];
      }
      v.push_back(make_pair(tmp,i));
    }
  sort(v.begin(),v.end());
  for(int i{0};i<v.size();i++)
    {
      cout<<v[i].second<<" ";
      if(i%10==9)
      {
        cout<<"\n";
      }
    }
  return 0;
}

문제의 조건대로 하나씩 읽어서 영어로 바꾸어도 입력받는 두 수가 1~99 까지여서 시간제한과 메모리 제한에 걸리지 않기도 하고 편한 방법이라고 생각합니다.

영어로 변환한 다음 정렬을 사용하여 출력하면 쉽게 풀 수 있는 문제입니다.

반응형

'백준 문제풀이' 카테고리의 다른 글

25304번 : 영수증  (0) 2022.08.30
2599번 : 수열  (0) 2022.08.04
2985번 : 세 수  (0) 2022.08.03
1436번 : 영화감독 숌  (0) 2022.07.26
2744번 : 대소문자 바꾸기  (0) 2022.07.14