'C & C++ > Baekjoon' 카테고리의 다른 글
백준 10172 - 개 (0) | 2017.12.27 |
---|---|
백준 9498 - 시험 성적 (0) | 2017.12.27 |
백준 5622 - 다이얼 (0) | 2017.12.27 |
백준 8393 - 합 (0) | 2017.12.27 |
백준 4673 - 셀프 넘버 (0) | 2017.12.27 |
백준 10172 - 개 (0) | 2017.12.27 |
---|---|
백준 9498 - 시험 성적 (0) | 2017.12.27 |
백준 5622 - 다이얼 (0) | 2017.12.27 |
백준 8393 - 합 (0) | 2017.12.27 |
백준 4673 - 셀프 넘버 (0) | 2017.12.27 |
<주의 사항>
다이얼 번호마다 알파벳이 없는 경우도 있고, 3개 또는 4개인 경우가 있다.
<접근 방법>
1. 각 다이얼 0~9까지 걸리는 시간을 sec[번호 인덱스] 형태로 만들어준다. (그냥 있는 다이얼을 다 해줬지만, 문제에서 사용되는 2~9까지만 해줘도 된다)
2. 입력받은 문자를 맨 앞부터 끝날 때까지 다음을 반복한다.
2-1. 알파벳에 따른 소요 시간을 총 소요 시간에 더해준다.
3. 총 소요 시간을 출력하고 종료한다.
cf1. 시간을 sec 배열로 해주지 않고 그냥 totalSec에 바로 해당 값을 더해줘도 상관없다.
cf2. switch문이나 if문 아무거나 사용해도 된다. switch-case문이 깔끔해보여서 사용했다.
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 52 53 54 55 56 57 58 59 60 61 62 | #include <iostream> #include <string> using namespace std; int main(void) { int sec[10] = {11,2,3,4,5,6,7,8,9,10}; string input; int totalSec = 0; cin >> input; for(int i=0; i<input.length(); i++) { switch(input.at(i)) { case 'A': case 'B': case 'C': totalSec += sec[2]; break; case 'D': case 'E': case 'F': totalSec += sec[3]; break; case 'G': case 'H': case 'I': totalSec += sec[4]; break; case 'J': case 'K': case 'L': totalSec += sec[5]; break; case 'M': case 'N': case 'O': totalSec += sec[6]; break; case 'P': case 'Q': case 'R': case 'S': totalSec += sec[7]; break; case 'T': case 'U': case 'V': totalSec += sec[8]; break; case 'W': case 'X': case 'Y': case 'Z': totalSec += sec[9]; break; } } cout << totalSec << "\n"; return 0; } | cs |
백준 9498 - 시험 성적 (0) | 2017.12.27 |
---|---|
백준 8958 - OX퀴즈 (0) | 2017.12.27 |
백준 8393 - 합 (0) | 2017.12.27 |
백준 4673 - 셀프 넘버 (0) | 2017.12.27 |
백준 4344 - 평균은 넘겠지 (0) | 2017.12.27 |
<접근 방법>
1. for문으로 1부터 n까지 더한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #include <iostream> int main(void) { int n; int result = 0; std::cin >> n; for(int i=1; i<n+1; i++) result += i; std::cout << result << "\n"; return 0; } | cs |
백준 8958 - OX퀴즈 (0) | 2017.12.27 |
---|---|
백준 5622 - 다이얼 (0) | 2017.12.27 |
백준 4673 - 셀프 넘버 (0) | 2017.12.27 |
백준 4344 - 평균은 넘겠지 (0) | 2017.12.27 |
백준 2941 - 크로아티아 알파벳 (0) | 2017.12.27 |
<접근 방법>
1. 문제에서 정의한 d(n) 함수를 C++ 함수로 구현
2. 위의 함수에 n을 1부터 9999까지 초기 시드로 넣고 2-1을 진행한다.
2-1. d(x)가 10000보다 작은 동안 n, d(n), d(d(n)), ... 을 반복 진행한다.
3. 초기값을 제외하고 과정 2에서 나오는 숫자들은 셀프 넘버가 아니므로 셀프 넘버에서 제외시킨다.
4. 위의 과정이 모두 끝난 후, 셀프 넘버인 것들을 차례대로 출력한다.
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 | #include <iostream> using namespace std; int d(int n) { return n + (n/1000) + (n%1000)/100 + (n%100)/10 + (n%10); } int main(void) { bool isSelf[10000]; int temp; for(int i=0; i<10000; i++) isSelf[i] = true; for(int i=1; i<10000; i++) { temp = i; while(temp < 10000) { temp = d(temp); if(temp <= 10000) isSelf[temp-1] = false; } } for(int i=0; i<10000; i++) if(isSelf[i]) cout << i+1 << "\n"; return 0; } | cs |
백준 5622 - 다이얼 (0) | 2017.12.27 |
---|---|
백준 8393 - 합 (0) | 2017.12.27 |
백준 4344 - 평균은 넘겠지 (0) | 2017.12.27 |
백준 2941 - 크로아티아 알파벳 (0) | 2017.12.27 |
백준 2920 - 음계 (0) | 2017.12.27 |
백준 8393 - 합 (0) | 2017.12.27 |
---|---|
백준 4673 - 셀프 넘버 (0) | 2017.12.27 |
백준 2941 - 크로아티아 알파벳 (0) | 2017.12.27 |
백준 2920 - 음계 (0) | 2017.12.27 |
백준 2908 - 상수 (0) | 2017.12.27 |