일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 알고리즘 연습
- django widget
- web
- MAC
- 파이썬
- Baekjoon
- 알고리즘
- java
- react
- 장고
- HTML
- AWS
- form
- django ORM
- CSS
- Django
- js
- DRF
- django rest framework
- API
- es6
- PYTHON
- Algorithm
- 알고리즘 풀이
- Git
- 파이썬 알고리즘
- c++
- 백준
- 알고리즘 문제
- javascript
Archives
- Today
- Total
수학과의 좌충우돌 프로그래밍
[C++] BAEKJOON 9455번 박스(ACM-ICPC Daejeon 2013) 본문
ACM-ICPC 문제라고 하기에 쉽고 간단한 문제 였습니다.
박스는 각 column 에서만 이동을 할 수 있으므로 column 을 기준으로 나눠서 생각해주었습니다. 박스가 있을 경우, 바닥으로 부터 거리를 구해주는데 dump
라는 변수를 만들어서 현재 바닥으로 부터 몇 개의 박스가 쌓여 있나를 확인해주었습니다. 바닥으로 부터의 거리 - 쌓여있는 박스의 개수
를 통해 해당 박스가 움직인 거리를 구할 수 있습니다. 이를 모두 더해주어서 모든 박스의 총 이동거리를 구했습니다.
#include <iostream>
using namespace std;
int grid[100][100];
int main(int argc, const char * argv[]) {
int T;
cin >> T;
for (int t=0;t<T;t++){
int M,N;
cin >> M >> N;
for (int i=0;i<M;i++){
for (int j=0;j<N;j++){
cin >> grid[i][j];
}
}
// 총 이동거리
int totalDis = 0;
for (int col=0;col<N;col++){
// 해당 column 에서 바닥에 쌓인 갯수
int dump = 0;
for (int row=M-1;row>=0;row--){
if (grid[row][col] == 1){
totalDis += (M-1)-row-dump;
dump++;
}
}
}
cout << totalDis << endl;
}
return 0;
}
'알고리즘 > C++' 카테고리의 다른 글
[C++] BAEKJOON 5052번 전화번호목록 (0) | 2019.08.26 |
---|---|
[C++] BAEKJOON 8901번 화학제품(ACM-ICPC Daejeon 2011) (0) | 2019.08.02 |
[C++] BAEKJOON 8895번 막대배치(ACM-ICPC Daejeon 2012) (2) | 2019.07.31 |
[C++] 이진 탐색 알고리즘 (1) | 2019.03.26 |
[C++] 최적의 소수찾기, 에라토스테네스의 체 (1) | 2019.02.08 |
Comments