© 2025 anveloper.dev
GitHub·LinkedIn·Contact

목차

  • 문제
  • 입력
  • 출력
  • 예제
  • 풀이
  • 코드
  • 복잡도
풀이 목록으로 돌아가기

BOJ 3047 - ABC

2024-08-12
BOJ
브론즈 III
cpp
원본 문제 보기
구현

문제

BOJ 3047 - ABC

세 수가 주어지고, A는 가장 작은 수, B는 중간, C는 가장 큰 수이다. 주어진 문자 순서대로 출력하라.

입력

세 수와 A, B, C 중 3글자 문자열이 주어진다.

출력

문자열 순서에 따라 수를 출력한다.

예제

입력출력
1 5 3 BAC3 1 5

풀이

세 수를 정렬한 뒤 문자에 따라 매핑하여 출력한다.

  1. 세 수를 오름차순으로 정렬한다 (num[0]=A, num[1]=B, num[2]=C)
  2. 입력 문자열의 각 문자에 대해 'A'=0, 'B'=1, 'C'=2로 인덱스를 계산한다
  3. num[문자 - 'A']로 해당하는 수를 출력한다

핵심 아이디어: 문자 'A''C'를 02 인덱스로 변환하면 정렬된 배열에서 직접 참조할 수 있다.

코드

#include <iostream>
#include <algorithm>
using namespace std;
 
int main()
{
  int num[3];
  cin >> num[0] >> num[1] >> num[2];
  sort(num, num + 3); // O(nlgn)
 
  for (int i = 0; i < 3; i++)
  {
    char tmp;
    cin >> tmp;
    cout << num[tmp - 'A'] << ' ';
  }
}

복잡도

  • 시간: O(1) (고정 크기 3)
  • 공간: O(1)