본문 바로가기
BOJ

백준 [C언어] 1431 : 시리얼 번호

by 횰임 2022. 2. 10.

✅문제
1. N개의 시리얼 번호를 입력받는다.
2. 길이가 짧은 것 부터 정렬
3. 길이가 같으면 숫자합이 작은 것 부터 정렬
4. 길이도 같고, 숫자합도 같으면 사전 순으로 정렬 (숫자먼저, 알파벳 순)


✅해결 방법
1. 2차원 문자배열 [N][51] 만들고 초기화
2. 시리얼 번호를 차례대로 입력받고 각 문자열 길이를 계산하여 일차원 배열 length[N]에 저장
3. 길이 순 정렬 ->길이 같으면 숫자 합 순 정렬 -> 숫자 합도 같으면 사전 순 정렬

▶️사전 순 정렬 함수
1. 알파벳이 아니면 (==숫자이면) 문자형 -> 숫자형으로 변환 : atoi() 함수 사용, 숫자 비교
(*atoi() 함수 : 문자열의 시작부터 숫자로 되어 있는 부분만 읽어서 정수형으로 변환해주고, 시작점이 숫자가 아닌 경우 0 반환.
2. 알파벳이면 두 문자열 strcmp()로 비교 (사전순으로 앞선 경우 -1, 뒤인 경우 1, 똑같은 경우 0 리턴)

▶️숫자 합 순 정렬 함수
1.