Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- 백엔드
- 운영체제와 정보기술의 원리
- SQL
- recoverability
- 김영한
- 데이터베이스
- 운영체제
- 코딩애플
- 커널 동기화
- 온디바이스AI
- 시그널 핸들러
- vite
- 프로세스 주소 공간
- 네트워크
- 반효경
- 시스템프로그래밍
- 트랜잭션
- Git
- 코딩테스트 [ ALL IN ONE ]
- 개발남노씨
- Extendable hashing
- concurrency control
- 갤럭시 S24
- 쉬운 코드
- SDK
- CPU 스케줄링
- B tree 데이터삽입
- 쉬운코드
- 인터럽트
- BreadcrumbsComputer-Networking_A-Top-Down-Approach
Archives
- Today
- Total
티끌모아 태산
알아두면 좋은 것 본문
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
'백준 문제 > 기타' 카테고리의 다른 글
17298: 오큰수 (1) | 2024.04.05 |
---|