방법 1. scanf 이용하여 나누어 받기
가장 흔한 방법이다. C에서 주로 사용하는 scanf에서는 입력 형식을 지정해주어야한다. 이 때 입력을 "%1d"로 지정하면 된다. 이렇게 지정하면 하나의 정수가 들어오면 입력이 모두 된 것으로 간주하고 다음 입력으로 넘어가게 된다. 같은 방식으로 이중 for문에도 활용할 수 있다.
#include <iostream>
using namespace std;
int main()
{
int a[10];
for (int i=0; i<10; i++)
{
scanf("%1d", &a[i]);
}
for (int i=0; i<10; i++)
{
cout<<a[i]<<endl;
}
}
방법 2. string으로 입력받아 나누어 받기
string으로 받아서 나누는 방식이다. string은 인덱스 접근이 가능하다는 점을 이용하는 것이다.
1) string 전체를 받고 2) 각각 인덱스별로 정수로 변경하여 int 배열에 넣는 것이다.
string변수.size()를 통해 string의 크기를 구할 수 있다.
왜 아래처럼하면 정수 값으로 변환되는걸까?
실제로 C언어에서 문자는 정수값 취급한다. 정수 연산도 된다. 예를 들어 문자 1 2 3 4도 각각 정수값을 가진다.
문자 0은 48이라는 정수값을 가지고 있으므로 '0'을 기준으로하여 문자끼리 연산하여 정수값처럼 사용하는 것이다.
#include <iostream>
using namespace std;
int main()
{
int a[10];
string s;
cin>>s;
for(int i=0; i<s.size(); i++)
{
a[i]=s[i]-'0';
}
for (int i=0; i<s.size(); i++)
{
cout<<a[i]<<endl;
}
}
'C C++ > C C++ 유용한 알고리즘 기법' 카테고리의 다른 글
DFS - 전위순회, 중위순회, 후위순회 (0) | 2024.11.23 |
---|---|
알고리즘 병합 정렬 완벽 이해하기 (0) | 2022.10.29 |
[C/C++] 배열값 옮기기 (0) | 2022.10.15 |
[C/C++] 2차원 배열 90도 회전하기 (0) | 2022.10.08 |
[C/C++] 백준 11653번 소인수분해 (0) | 2022.10.04 |
댓글