DY N DY
실력키우기 전화번호 속의 암호(C++) 본문
1620 : 전화번호 속의 암호
제한시간: 1000 ms 메모리제한: 32 MB
해결횟수: 494 회 시도횟수: 2601 회
자물쇠 사용자의 핸드폰 번호를 가지고 보다 기억하기 편하게 이를 암호로 만들려고 한다. 즉 자물쇠를 사면 처음에 숫자 두 개를 입력하는데 첫 번째 숫자는 각 자리에 더해질 숫자이고, 두 번째 숫자는 몇 번째 숫자 더미를 가지고 암호를 만들 것인가를 결정하는 것이다. 해당 더미 숫자에 각각 더해질 숫자를 더하면 이것이 암호가 된다. 자물쇠의 비밀번호를 만들어 내는 프로그램을 작성하라.
< 처리조건 >
(1) 핸드폰 번호, 각 자리에 더해질 숫자, 숫자 더미의 위치를 입력받는다.
(2) 입력된 핸드폰 번호에서, 각 숫자 더미사이의 구분은 하이픈(-)으로 하고, 번호는 0이상 9이하의 자연수만 들어온다.
(3) 숫자 더미는 앞에서부터 자동적으로 1번부터 매겨지며, 그 수의 제한은 없다. 즉 반드시 abc-defg-hijk 형태의 3개의 숫자더미를 가지는 전화번호만이 있는 것은 아니다.
(4) 원하는 숫자더미에서 각 자리의 숫자를 더한다. 이때 더한 값이 9를 넘을 경우에는 그 중 일의 자리 값만을 취한다.
(5) 각 숫자더미는 4자리를 넘어서는 안된다.
(6) 각 숫자 더미의 크기가 4자리가 안될 경우에는 전체를 4자리로 한 후, 앞에 그 비는 자리 수만큼 0을 붙인다.
[Copy]111-2222-3412-5432 2 4 | [Copy]7654 |
[Copy]11111-22-33 5 1 | [Copy]INPUT ERROR! |
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | /************************************************************** Problem: 1620 User: a132034 Language: C++ Result: Success Time:0 ms Memory:1772 kb ****************************************************************/ #include <iostream> #include <string> #include <sstream> #include <vector> #include <cstdio> using namespace std; int main() { string s; int p, m; int num; vector<int> numbers; cin >> s; cin >> p >> m; stringstream ss(s); string number; while (getline(ss, number, '-')) { istringstream(number) >> num; if (num / 10000 > 0) { cout << "INPUT ERROR!" << endl; return 0; } numbers.push_back(num); } if (numbers.size() + 1 < m) { cout << "INPUT ERROR!" << endl; return 0; } int num1 = numbers[m - 1] / 1000; int num2 = numbers[m - 1] % 1000 / 100; int num3 = numbers[m - 1] % 100 / 10; int num4 = numbers[m - 1] % 10; cout << (num1 + p) % 10 << (num2 + p) % 10 << (num3 + p) % 10 << (num4 + p) % 10 << endl; return 0; } | cs |
단순 문자열 계산문제.
사실 문자열을 나누어 숫자로 변환만 할 수 있다면 어려울 것은 없다.
1234-1234-1234... -로 이어진 문자열을 s로 받았고, stringstream으로 초기화해주었다.
이것을 getline함수로 number라는 string에 -를 기준으로 하나씩 넣어주었고
istringstream으로 숫자로 변환하였다.
'PARK > ALGORITHM' 카테고리의 다른 글
BOJ 2293 동전1(C++) (0) | 2016.08.30 |
---|---|
BOJ 1717 집합의 표현(C++) (0) | 2016.08.30 |
알고리즘 & BOJ 2457 공주님의 정원(C++) (0) | 2016.08.26 |
BOJ 3649 로봇 프로젝트(C++) (0) | 2016.08.25 |
알고리즘 & BOJ 1725 히스토그램(C++) (0) | 2016.08.25 |