백준 문제/기타
알아두면 좋은 것
goldpig
2024. 3. 27. 10:53
728x90
맵 입력 받기
파이썬으로 코딩테스트를 준비하다 C++로 봐야하는 상황이 생겼다. 준비 하는 과정에서 맵을 입력 받는 부분이 헷갈렸던 경험이 있어서 이렇게 기록해 둔다.
4 6
101111
101010
101011
111011
먼저 해당 맵을 입력 받을 때 파이썬 코드는 다음과 같다.
n, m = map(int, input().split())
graph = []
for _ in range(n):
graph.append(list(map(int, input())))
하지만 C++ 코드는 다음과 같다. 처음에는 왜 이런식으로 받는지 헷갈렸지만 일단은 이해하고 암기를 해야할 거 같다.
int n,m;
int graph[50][50];
cin >> n >> m; // 크기 입력받기
for (int i = 0; i < n; i++){
string s; cin >> s; // 행 입력 받기
for (int j = 0; j < m; j++){
graph[i][j] = s[j] - '0'; // 행 별 좌표값 저장, 좌표값들은 문자 형태이기 때문에 정수로 변환
}
}
3 4 6
....
.T..
....
위 문자열에 대한 맵을 받는 코드는 각각 다음과 같다.
n,m,k = map(int, input().split())
# 1
graph = [list(input()) for _ in range(n)]
# 2
graph = []
for _ in range(n):
graph.append(list(input()))
int n,m,k;
(1<=n,m<=50)
int graph[50][50]
cin >> n >> m >> k;
for (int i = 0; i < n; i++){
for (int j=0; j < m; j++){
cin >> graph[i][j];
}
}
맵 초기화 하기
문제를 풀다보면 2차원 배열을 초기화 하는 경우가 많은데, 이것의 차이를 보면 다음과 같다. 먼저 C++ 코드를 보자
#include <cstring>
int graph[50][50];
// 0으로 2차원 배열 초기화 하기
memset(graph, 0, sizeof(graph))
이제 python 을 살펴보자
n,m = map(int, input().split())
graph = [[0] * m for _ in range(n)]
2차원 배열 초기화
1.
n = 4
graph = [[[]] * n for _ in range(n)]
[[], [], [], []]
[[], [], [], []]
[[], [], [], []]
[[], [], [], []]
4 4
0 0 2 0
0 0 1 0
0 0 1 2
0 2 0 0
2 1 1
3 2 3
2 2 1
4 1 2
for i in chess:
print(i)
for i in horse:
print(i)
[[], [], [], []]
[[0, 2], [0, 2], [0, 2], [0, 2]]
[[1], [1], [1], [1]]
[[3], [3], [3], [3]]
[1, 0, 0]
[2, 1, 2]
[1, 1, 0]
[3, 0, 1]
서로 다른 2차원 배열이다. 주의하자!
n, k = map(int, input().split())
graph = [list(map(int, input().split())) for _ in range(n)]
# 말의 번호를 저장할 리스트
chess = [[[] for _ in range(n)] for _ in range(n)]
# 말의 위치와 방향을 저장할 리스트
horse = []
for i in range(k):
x,y,d = map(int, input().split())
horse.append([x-1,y-1,d-1])
# 위치에 말의 번호를 저장
chess[x-1][y-1].append(i)
4 4
0 0 2 0
0 0 1 0
0 0 1 2
0 2 0 0
2 1 1
3 2 3
2 2 1
4 1 2
for i in chess:
print(i)
for i in horse:
print(i)
[[], [], [], []]
[[0], [2], [], []]
[[], [1], [], []]
[[3], [], [], []]
[1, 0, 0]
[2, 1, 2]
[1, 1, 0]
[3, 0, 1]
728x90