inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

따닥따닥 붙어있는것 입력(교안, 23page)

253

Hyungjune Choi

작성한 질문수 18

0

입력을

4 4

1000

0000

0111

0000

로 하면,

 

cin >> n >> m;

for(int i = 0; i <n ; i++){

cin >> s;

}

 

로 알려주셨는데.. 이게 어떻게 저걸 받아들이는건가요?

앞에

int n,m;

string s;

가 있다고 해도 너무 이상해서요..

 

그리고 뒤에 scanf로 받는거랑 둘중 뭐가 더 좋다 안좋다는 없을까요? (그전에는 뭐가 이왕이면 더 좋다는식으로 써주셧길래 문의드려요)

C++ 코테 준비 같이 해요!

답변 2

0

Hyungjune Choi

정말 감사합니다! :)

 

'0' 을 배는 이유는 아스키코드표의 0이 0x80 이니 그만큼을 빼서 진짜 숫자 0으로 만들어 주시는거군요

 

취미쟁이에게 너무 좋은 강의입니다 감사합니다!

0

큰돌

맞습니다. ㅎㅎ

문자에서 숫자 형변환은 항상 아스키코드를 유념해두어야 해요.

감사합니다.

0

큰돌

안녕하세요. ㅎㅎ

1111 등을 하나의 문자열로 받아서

for char : s

이런식으로 문자열을 문자로 분해해서 처리한다는 의미입니다.

 

교안에 해당 부분을 추가 및 수정했는데요. 다음과 같습니다.

cin으로 받을 때는 개행문자(띄어쓰기, 한줄띄기)까지 받을 수 있다라는 것을 기억해주세요. 

#include<bits/stdc++.h>
using namespace std; 
int n, m, a[10][10];
string s; 
int main(){
	cin >> n >> m; 
	for(int i = 0; i < n; i++){
		cin >> s;
		for(int j = 0; j < m; j++){
			a[i][j] = s[j] - '0';
		} 
	}
	for(int i = 0; i < n; i++){ 
		for(int j = 0; j < m; j++){
			cout << a[i][j]; 
		} 
		cout << '\n';
	}
}
/*
4 4 
1000
0000
0111
0000
1000
0000
0111
0000

*/ 

위의 코드처럼 문자열 s를 받아 문자열을 문자로 분해(s[j]) 해서 형변환 s[j] - ‘0’을 통해 숫자를 int형 배열인 a[i][j] 배열에 넣는 것을 볼 수 있습니다.

음.. 좋다 안좋다는 없습니다. 여러가지 해보시고 본인이 편한 방식으로 하시면 됩니다.

  • 저는 개인적으로 cin이 편해요.

감사합니다.

1-E질문입니다!

0

529

2

3-L 틀린 부분 피드백 부탁드립니다.

0

833

2

1-A문제 순열재귀함수 질문입니다.

0

396

1

1-A 일곱난쟁이문제입니다

0

465

1

문제 풀 때 방향성에 대해

0

808

1

맥에서 vs code로 실행 관련 질문입니다

0

528

1

17071번 메모리 초과

0

388

1

1-C질문입니다!

0

427

2

2-B BFS 시간초과질문

0

636

2

1-O 13번 라인

0

445

1

6-J 놀이공원 문제 질문

0

386

1

구현관련 질문

0

487

1

강의 교안

0

321

1

실력을 더 올리고나서 강의를 보는 것이 맞을까요?

0

549

1

안녕하세요! 재귀함수에 관해서 질문드립니다

0

538

1

1-K

0

481

2

3-G번 질문있습니다.

1

478

3

3-C 실행 시간 질문드립니다.

0

500

1

4-A 문제 풀이 질문있습니다.

0

598

2

비트마스킹 연산자 "1의 보수" 영문 표기법

0

441

1

격자탐색 문제에서 BFS 시간복잡도 질문드립니다.

0

344

1

3-O go 함수 질문 드립니다.

1

450

2

4-A 출력 질문

0

306

1

1주차 1-O 질문드립니다

0

262

1