
✅문제
1. N개의 시리얼 번호를 입력받는다.
2. 길이가 짧은 것 부터 정렬
3. 길이가 같으면 숫자합이 작은 것 부터 정렬
4. 길이도 같고, 숫자합도 같으면 사전 순으로 정렬 (숫자먼저, 알파벳 순)
✅해결 방법
1. 2차원 문자배열 [N][51] 만들고 초기화
2. 시리얼 번호를 차례대로 입력받고 각 문자열 길이를 계산하여 일차원 배열 length[N]에 저장
3. 길이 순 정렬 ->길이 같으면 숫자 합 순 정렬 -> 숫자 합도 같으면 사전 순 정렬
▶️사전 순 정렬 함수
1. 알파벳이 아니면 (==숫자이면) 문자형 -> 숫자형으로 변환 : atoi() 함수 사용, 숫자 비교
(*atoi() 함수 : 문자열의 시작부터 숫자로 되어 있는 부분만 읽어서 정수형으로 변환해주고, 시작점이 숫자가 아닌 경우 0 반환.
2. 알파벳이면 두 문자열 strcmp()로 비교 (사전순으로 앞선 경우 -1, 뒤인 경우 1, 똑같은 경우 0 리턴)
▶️숫자 합 순 정렬 함수
1.
'BOJ' 카테고리의 다른 글
백준 [C 언어] 1822: 차집합 (0) | 2022.02.15 |
---|---|
백준 [C언어] 18870 : 좌표 압축 (0) | 2022.02.10 |
백준[C언어] 2108: 통계학 (0) | 2022.02.09 |
백준[C언어] 10989: 수 정렬하기 3 (0) | 2022.02.07 |
백준[C언어] 17478: 재귀함수가 뭔가요? (0) | 2022.01.28 |