본문 바로가기
Computer Science/PS

[PS] 10093. 숫자

by BrickSky 2023. 12. 16.

1) 문제: 10093. 숫자

 

2) 나의 첫 풀이

  • 2개의 수를 입력받는다.
  • 두 수의 차를 이용하여 첫째 줄에 두 수 사이의 개수를 구한다.
  • 입력받은 숫자 중 작은 수 부터 큰 수 까지의 수를 출력한다.

두 개의 수를 입력받는다 / 두 수 사이의 개수를 구한다.

int main()
{
    int a = 0;
    int b = 0;

    cin >> a >> b;
    cout << b-a-1 << '\n';
    
    return  0;
}

 

입력받은 숫자 중 작은 수부터 큰 수까지의 수를 출력한다.

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

int main()
{
    int a = 0;
    int b = 0;

    cin >> a >> b;
    cout << b-a-1 << '\n';
    
    for(int i=a+1; i<b; i++){
        cout << i << ' ';
    }
        
        
    return  0;
}

틀렸다...

 


서브 태스크를 지키지 않아서 그런 걸까..?

1 30 1 ≤ A, B ≤ 1000.
2 70 1 ≤ A, B ≤ 1015, A와 B의 차이는 최대 100,000.

 

3) 나의 두 번째 풀이

1 ≤ A, B ≤ 1000. 조건을 만족하는 코드를 작성해 주었다.

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

int main()
{
    
    int a = 0;
    int b = 0;
    
    cin >> a >> b;
    
    if(a>=1 && a<=1000 && b>=1 && b<=1000){
        cout << b-a-1 << '\n';
        
        for(int i=a+1; i<b; i++){
            cout << i << ' ';
        }
    }
}

 

a와 b를 입력받는다고 할 때,

반드시 a가 b보다 작은 경우만 있는 건 아니기에, a가 b보다 작은 경우! a와 b를 바꿔주는 코드를 구현해야 한다.

 

 

a가 b보다 작은 경우! a와 b를 바꿔주는 코드를 구현해 주었다.

if(a>b){
            swap(b, a);
        }

 

 

a와 b가 같거나, a와 b의 차가 1인 경우

if(a==b || b-a == 1){
            cout << 0;
        }
        else
            cout << b-a-1 << '\n';

 

 

 <최종 코드>

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

int main()
{
    
    long long a = 0;
    long long b = 0;
    
    cin >> a >> b;
    
    if(a>=1 && a<=1000 && b>=1 && b<=1000){
        if(a>b){
            swap(b, a);
        }
        if(a==b || b-a == 1){
            cout << 0;
        }
        else
            cout << b-a-1 << '\n';
      
        for(long long i=a+1; i<b; i++){
            cout << i << ' ';
        }
    }
}

 

 

4) 배운 점: 모든 경우를 대비하자.

문제를 풀며 놓쳤던 부분이 있어 정리해보려 한다.

 

1. a가 b보다 작은 경우일 때만 고려했다.

a가 b보다 작은 경우만 고려해서 swap를 활용해 다른 경우를 대비해야겠다는 생각을 못했다.

b가 a보다 작은 경우도 있는데, 해당 경우를 고려하지 않아 정답이 될 수 없었다. 

 

2. swap() 함수

if(a>b){
            swap(b, a);
        }

위와 같이 swap() 함수를 사용해서 a와 b의 값을 바꿀 수 있다.

 

 

'Computer Science > PS' 카테고리의 다른 글

[PS] 10804. 카드 역배치  (2) 2023.12.18
[PS] 1267. 핸드폰 요금  (0) 2023.12.17
[PS] 2309. 일곱 난쟁이  (0) 2023.12.16
[PS] 2587. 대표값2  (0) 2023.12.16
[PS] 2576. 홀수  (0) 2023.12.13