개발 공부
이차원배열 입력받기! (백준- 행렬덧셈 feat.파이썬 print 옵션) 본문
이 문제는 그냥 풀려면 풀 수 있는데...
#include <stdio.h>
int main()
{
int x,y;
scanf("%d %d",&x,&y);
int arr1[x][y];
int arr2[x][y];
int ans[x][y];
for(int i=0; i<x; i++) //이차원 배열 입력 배열 arr1
{
for(int j=0; j<y; j++)
{
scanf("%d",&arr1[i][j]);
}
}
for(int i=0; i<x; i++) //이차원 배열 입력 배열 arr2
{
for(int j=0; j<y; j++)
{
scanf("%d",&arr2[i][j]);
ans[i][j] = arr1[i][j] + arr2[i][j];
}
}
for(int i=0; i<x; i++) //더한 배열 ans 출력
{
for(int j=0; j<y; j++)
{
printf("%d ",ans[i][j]);
}
printf("\n");
}
}
이런식으로 입력을 이중 for문을 두번 써서 쓰면 되긴하지만....
3차원 배열을 쓰면 for문을 한번만 쓰면 되지 않을까???싶어서 아래와 같이 진행을 해봤다
#include<stdio.h>
int main()
{
int x,y;
scanf("%d %d",&x,&y);
int arr[2][x][y];
int ans[x][y];
for(int i=0; i<2; i++) //행렬 두개
{
for(int j=0; j<x; j++)
{
for(int k=0; k<y; y++)//열
{
scanf("%d",&arr[i][j][k]);
}
}
}
for(int j=0; j<x; j++){//행
for(int k=0; k<y; y++)//열
{
ans[j][k] = arr[0][j][k] + arr[1][j][k];
printf("%d ",ans[j][k]);
}
printf("\n");
}
}
결과는 실패...왜인지는 아직 찾지 못해서 다음주에 교수님께 여쭤봐야겠다...ㅠㅠ
왜 실패인지 이유를 찾기 위해 scanf의 원리를 다시 조사하는 중! 알아내면 다시 보충하기로..ㅠㅠ
파이썬으로 풀면
import sys
a = []
b = []
n,m = map(int,input().split())
for i in range(n):
data = list(map(int,sys.stdin.readline().split()))
a.append(data) //리스트에 요소추가
for i in range(n):
data = list(map(int,sys.stdin.readline().split()))
b.append(data) //리스트에 요소추가
for i in range(n):
for j in range(m):
print(a[i][j]+b[i][j],end=" ") //줄바꿈을 하지 않기 위해 end옵션을 이용
print()
시간초과의 문제가 생길 수 있으므로 반복문으로 여러줄을 입력받을 때는
input()대신
sys.stdin.readline()을 사용합니다!
파이썬 print()옵션
1. sep(separation) : 분리하여 출력
ex) print(1,2,3, sep='#')
출력>> 1#2#3 >>문자열 사이의 구분자가 #이 됨
2.end : 뒤의 출력값과 이어서 출력(줄바꿈 x)
ex) print("i love", end=" ")
print("you")
출력>> i love you >> 공백을 한칸 줘 띄어서 이어출력 (구분자처럼 사용 가능)
3. format : 특정부분을 바꾸기
ex) print("오늘은 {0}년 {1}월 {2}일 입니다.".format(2022,11,4))
출력 >> 오늘은 2022년 11월 4일 입니다.
'코딩 테스트 준비 > c++' 카테고리의 다른 글
중간값 알아내기 (0) | 2022.11.05 |
---|---|
c++ 문자열 길이 (0) | 2022.11.04 |
검증수 (제곱 구하기) (0) | 2022.11.04 |
백준 사파리 월드 (절댓값구현) (0) | 2022.11.04 |
c++ 백준 긴자리계산 답이 왜 길까??? (feat. 파이썬) (0) | 2022.11.03 |