on my way

[GDSC Week0-3] 백준 1547번:: 공 (C++) 본문

algorithm/C++

[GDSC Week0-3] 백준 1547번:: 공 (C++)

wingbeat 2021. 9. 26. 17:47
반응형

 

 

* 문제를 풀기 위해 생각한 아이디어

크기가 3인 배열을 선언하고, 차례대로 컵번호 {1,2,3}으로 선언한다.

swap함수로 해당 위치의 컵 바꾸기를 진행하고 최종적으로 1번컵이 위치한 배열의 순서를 출력한다. 

 

 

* 코드

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

int main(int argc, char const *argv[]){
	ios::sync_with_stdio(false); 
    cin.tie(NULL); cout.tie(NULL);
    
    int A, B, M;
    int arr[3]={1, 2, 3};
    
    cin >> M;
    for(int i=0; i<M; i++){
        cin >> A >> B;
        swap(arr[A-1], arr[B-1]);
    }

    for(int i=0; i<3; i++){
        if(arr[i]==1) cout<<i+1;
    }    

}

 

 

* 어떻게 풀었는지

1. 교환할 컵의 번호 A, B, 반복횟수 M, 컵의 배열 arr을 각 컵의 번호 1,2,3으로 선언한다.

2. 반복횟수 M을 입력받는다.

3. 교환할 컵의 번호를 입력받고, swap한다.

4. for문으로 1번 컵을 찾으면 해당 위치를 출력한다. (-번째이므로 +1)

 

 

* 회고

1. 문제를 잘못이해해서 가장 왼쪽에 위치한 컵의 번호를 출력하라는 것으로 이해했었다.

2. 문제에서 컵이 없는 경우가 -1라고 했는데, 이런 경우가 있는가..? 괜히 헤맸다.ㅎㅎ

 

 

* 문제 링크

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

 

10804번: 카드 역배치

1부터 20까지 오름차순으로 놓인 카드들에 대해, 입력으로 주어진 10개의 구간 순서대로 뒤집는 작업을 했을 때 마지막 카드들의 배치를 한 줄에 출력한다. 

www.acmicpc.net

 

반응형