sugang
sugang'study
sugang
전체 방문자
오늘
어제
  • 분류 전체보기
    • [OS]
    • [취업정보]
    • [Server]
    • [Algorithm]
    • [Database]
    • [MyTravel]
    • [Network]

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • n

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
sugang

sugang'study

[Algorithm]

[탐색] 전략 추려내기 - ABC 줄세우기

2023. 5. 10. 22:07

문제

처음에 n명의 사람이 서있는 순서가 A부터 순서대로 알파벳으로 주어지면 알파벳 순으로 줄을 세우려고 합니다. 단, 순서대로 줄을 세우기 위해서는 인접한 두 사람의 위치를 계속 바꾸는 행위만 가능하다고 할 때, 가능한 최소 횟수를 구하세요.

예시

ex)n=4, 

A  D  B  C     =>    A  B  C  D 

출력:2

1. A B D C

2. A B C D 

 

따라서, 2


풀이

가장 뒤에 있는 알파벳 부터 하나씩 이동해가며 위치를 맞춰준다. 

감소 for 문으로 가장 뒤에 있는 알파벳 (D) 와 입력받은 배열 (arr)에 해당 알파벳이 존재하는 위치 (index)를 찾는다. 

만약 두 값이 다르다면, 옳은 위치에 도달할 때 까지 하나씩 위치를 바꾸어준다. 

코드

python3

n=int(input())
arr=list(input().split())
alpha=[ chr(i).upper() for i in range(97,97+n)]
cnt=0
for i in range(n-1,0,-1):
    index=arr.index(alpha[i])

    if index!=i:
        for j in range(index,i): #인접한 위치끼리 변경
            arr[j],arr[j+1]=arr[j+1],arr[j]
            #옮긴 횟수 +1
            cnt+=1
print(cnt)

 

'[Algorithm]' 카테고리의 다른 글

백트래킹- 조합 구현  (0) 2023.05.23
시뮬레이션 - 1차원 폭발 게임  (0) 2023.05.14
완전탐색 - 최대최소차  (0) 2023.05.08
완전탐색 - 여러 구간, 구간 합의 최댓값이 최소가 되도록  (0) 2023.05.08
[이코테] 다익스트라 알고리즘  (0) 2022.06.02
    '[Algorithm]' 카테고리의 다른 글
    • 백트래킹- 조합 구현
    • 시뮬레이션 - 1차원 폭발 게임
    • 완전탐색 - 최대최소차
    • 완전탐색 - 여러 구간, 구간 합의 최댓값이 최소가 되도록
    sugang
    sugang

    티스토리툴바