최소 교환 횟수

면접 대비

시간 제한1초메모리 제한128 MB

요약
서로 다른 소문자로 이루어진 문자열마다 임의의 두 문자를 교환하는 연산으로 알파벳 순서로 정렬하는 최소 교환 횟수를 구한다.
난이도

보통10점 중 4점

유형
정렬, 그리디, 배열, 수학
정답자
아직 제출이 없습니다

문제

수열을 오름차순으로 정렬하는 것은 실생활에서 흔히 마주치는 작업입니다. 정렬 알고리즘에서 자주 쓰이는 연산 중 하나는 두 원소의 위치를 서로 맞바꾸는 것(swap)입니다.

서로 다른 소문자 알파벳으로 이루어진 문자열이 주어질 때, 이 문자열을 오름차순(사전순)으로 정렬하기 위해 필요한 최소 교환 횟수를 구하세요. 한 번의 교환은 문자열에서 임의의 두 문자의 위치를 서로 바꾸는 연산이며, 각 문자는 최대 한 번만 등장합니다.

입력

입력은 여러 개의 테스트 케이스로 이루어지며, 각 줄에 하나씩 주어집니다. 각 줄에는 서로 다른 소문자 알파벳으로 이루어진 문자열 SS가 주어집니다 (1≤∣S∣≤261 \le |S| \le 26). 한 줄 안에서 같은 문자가 반복되지 않습니다. 입력은 파일의 끝(EOF)에서 종료됩니다.

출력

각 입력 줄마다, 해당 문자열을 오름차순으로 정렬하기 위해 필요한 최소 교환 횟수를 한 줄에 하나씩 출력합니다.

예제1

  1. 예제 1

    입력
    abc
    cba
    acb
    bdca
    fedcba
    
    예상 출력
    0
    1
    1
    2
    3