반응형
* 문제 링크 :
http://jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=893&sca=99&sfl=wr_hit&stx=1620
** 문제 풀이 방법
1) 전화번호 문자열 크기 확인
2) 하이픈 갯수 및 위치 찾기
3) 각 더미의 시작점 확인
4) 조건 판별- 각 더미의 크기가 4보다 작을 경우 부족한 만큼 ‘0’ 채우기 - 더미들 중 4보다 큰 더미가 있을 경우 오류메시지 출력 및 종료 5) 조건에 맞게 암호 생성 후 반환 |
*** 코드
#include <stdio.h>
#include <cmath>
struct Dum {
int arr[5];
};
using namespace std;
char str[101];
int P, M;
int ans=0;
Dum dummy[101];
long lengthOfArray(const char* arr)
{
long size = 0;
while (*arr) {
size += 1;
arr += 1;
}
return size;
}
int main() {
freopen("input1620.txt", "r", stdin); // 본인 파일 입력
scanf("%s ", str);
scanf("%d%d", &P, &M);
//입력이 잘 들어왔나 확인
//printf("%s\n", str);
//printf("%d %d\n", P, M);
//int len = strlen(str); //<string.h> 사용 가능할 경우 이것 바로 사용
int len = lengthOfArray(str);
int dummy_cnt = 0;
int harr[101] = { 0, };
for (int i = 0; i < len; i++) {
if (str[i] == '-') {
dummy_cnt++;
harr[dummy_cnt] = i+1;
}
}
dummy_cnt++; // 하이픈 갯수보다 더미의 갯수가 1개 더 많으므로 1 추가
harr[dummy_cnt] = len+1;
for (int i = 0; i < dummy_cnt; i++) {
int dummy_len = harr[i + 1] - harr[i];
if (dummy_len < 5) {
int dummy_start_idx = harr[i];
int string_short = 5 - dummy_len;
for (int j = 0; j < string_short; j++) {
dummy[i].arr[j] = 0;
}
for (int j = 0; j < dummy_len; j++) {
dummy[i].arr[string_short+j] = str[dummy_start_idx + j] - '0';
}
}
else if (dummy_len == 5) {
int dummy_start_idx = harr[i];
for (int j = 0; j < 4; j++) {
dummy[i].arr[j] = str[dummy_start_idx + j] - '0';
}
}
else {
printf("INPUT ERROR!\n");
return 0;
}
}
for (int i = 0; i < 4; i++) {
if (M > dummy_cnt) { // 더미 갯수보다 M의 값이 클 경우 오류 메시지 반환
printf("INPUT ERROR!\n");
return 0;
}
else {
int num_loc = (dummy[M - 1].arr[i] + P) % 10;
ans += num_loc * pow(10, (3 - i));
}
}
printf("%d\n", ans);
return 0;
}
**** 주의할 점
•문자로 표현된 숫자를 ‘수’로 사용해야 하므로 숫자 표현 문자값에서 ‘0’을 빼준다.
ex) ‘1’ – ‘0’ = 1
•<string.h> 사용 가능할 경우 문자열 길이는 strlen(배열)을 사용!
|
<Reference>
- http://jungol.co.kr/theme/jungol/status.php?fcode=1620
반응형
'Data science > 알고리즘 학습' 카테고리의 다른 글
c++ 자료형 정리 (0) | 2022.02.28 |
---|---|
SWEA 1251 : 하나로[D4] (c++)_(priority_queue) (0) | 2022.02.23 |
그래프 알고리즘 (0) | 2022.02.22 |
SWEA 1251 : 하나로[D4] (c++) (0) | 2022.02.13 |
정올 1816 : 외양간 (c++) (0) | 2022.02.11 |