티스토리 뷰
반응형
백준 1431번 시리얼 번호
https://www.acmicpc.net/problem/1431
1431번: 시리얼 번호
첫째 줄에 기타의 개수 N이 주어진다. N은 50보다 작거나 같다. 둘째 줄부터 N개의 줄에 시리얼 번호가 하나씩 주어진다. 시리얼 번호의 길이는 최대 50이고, 알파벳 대문자 또는 숫자로만 이루어
www.acmicpc.net


정답 코드
#include<iostream>
#include<algorithm>
using namespace std;
int len;
string a[20000];
int sum1(string ab) {
int sum = 0;
int length = ab.length();
for (int x = 0; x < length; x++) {
if (ab[x] - '0' <= 9 && ab[x] >= 0) {
sum += ab[x] - '0';
}
}
return sum;
}
bool compare(string a, string b) {
if (a.length() < b.length())
return 1;
else if (a.length() > b.length())
return 0;
else {
int asum = sum1(a);
int bsum = sum1(b);
if (asum != bsum)
return asum < bsum;
else
return a < b;
}
}
int main() {
cin >> len;
for (int x = 0; x < len; x++)
cin >> a[x];
sort(a, a + len, compare);
for (int x = 0; x < len; x++) {
if (x > 0 && a[x] == a[x - 1])
continue;
else
cout << a[x] << endl;
}
}
문제 풀이
sort함수에서 사용하는 cmp함수를 수정해서 풀 수 있는 문제입니다. 먼저 문자열 배열로 입력을 받고 sort(a,a+len,cmp)를 선언하여 정렬을 시작합니다.
이때 sort를 사용하기 위해서 <algorithm>이라는 헤더파일을 사용해야 합니다. 그 다음 cmp함수에서 각 조건에 맞게 if문들을 선언합니다. 1번 조건이 길이이므로 string에 있는 length()함수를 사용합니다. return 1은 return true와 의미가 같습니다. 이런 식으로 2번 조건 3번 조건을 차례대로 적어서 적용시키면 문제를 해결할 수 있습니다.
반응형
'Algorithm > BOJ' 카테고리의 다른 글
백준 1476번 C++ (0) | 2023.07.24 |
---|---|
백준 1463번 C++ (0) | 2023.07.24 |
백준 1427번 C++ (0) | 2023.07.23 |
백준 1406번 C++ (0) | 2023.07.23 |
백준 1357번 C++ (0) | 2023.07.23 |
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 이분 매칭
- 자바
- java
- 카운팅 정렬
- C++ Stack
- 백준
- 자바스크립트
- 스택
- 알고리즘
- js
- CSS
- DP
- 알고리즘 공부
- 투 포인터
- 반복문
- C++
- 세그먼트 트리
- Do it!
- c++ string
- 자료구조
- 우선순위 큐
- 유클리드 호제법
- 유니온 파인드
- HTML5
- 에라토스테네스의 체
- BFS
- html
- DFS
- 백준 풀이
- 스프링 부트 crud 게시판 구현
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
글 보관함