사용언어 : C++
문제풀이
(1) A,B,C 값 입력받기. A*B*C 값 구하기. int형인 A*B*C값을 string으로 바꾸기 (char 배열에 저장된 거랑 동일)
cin >> A >> B >> C;
tmp = to_string(A*B*C); //string tmp;
to_string : int형을 string으로 바꾸기 위해 사용
(2) 반복문으로 tmp(string:char 배열)에 순차적으로 접근해 해당 값을 int arr[10]배열에 넣어주기
for (int i = 0; i < tmp.size(); i++) {
arr[tmp[i]-'0']++;
}
* tmp[i]는 char형이다.
- 여기서 tmp[i] 형변환을 위해 string을 int로 바꿔주려고 하다보니 자꾸 오류가 났다. 이유는 string에서 index로 접근하는, 즉 하나의 값은 char형이기 때문이다.(string은 char의 배열)
- arr[tmp[i]]++ => 아스키코드 값으로 나옴
- arr[(int)tmp[i]]++ => 아스키코드 값으로 나옴
(3) arr배열에 저장돼 있는 값 순차적으로 출력해주기
for (int i = 0; i < 10; i++) {
cout << arr[i] << "\n";
}
전체코드
#include <iostream>
#include<string>
using namespace std;
int A; int B; int C; int arr[10]; string tmp; int X;
int main() {
cin >> A >> B >> C;
tmp = to_string(A*B*C);
for (int i = 0; i < tmp.size(); i++)
arr[tmp[i]-'0']++;
for (int i = 0; i < 10; i++)
cout << arr[i] << "\n";
}
총평
간단한 문제일 줄 알았는데 예상외로 배열의 타입은 뭐로 할지, 처음 값을 입력받을 땐 어떤 타입으로 받아야 할지, 자료형을 정하는 게 헷갈렸다. 그리고 이후 형변환에서도 조금 막혔다. 알고 있었다고 생각한 것들이 헷갈려서 이번 기회에 정확히 정리하는 기회가 된 것 같다.
문제 출처
https://www.acmicpc.net/problem/2577
2577번: 숫자의 개수
첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 크거나 같고, 1,000보다 작은 자연수이다.
www.acmicpc.net
'CodingTest > BOJ' 카테고리의 다른 글
[BOJ 8958] 백준 OX퀴즈 풀이 - C++ (0) | 2021.09.10 |
---|---|
[BOJ 3052] 백준 나머지 풀이 - C++ (0) | 2021.09.07 |
[BOJ 2562] 백준 최댓값 풀이 - C++ (0) | 2021.09.07 |
[BOJ 2439] 백준 별 찍기 - 2 풀이 -C++ (0) | 2021.09.06 |
[BOJ 2739] 백준 구구단 풀이 - C++ (0) | 2021.09.05 |