티스토리 뷰
문제풀이
테이블 위에 자성체들이 있다.
푸른 자성체의 경우 N극에 이끌리는 성질을 가지고 있고, 붉은 자성체의 경우 S극에 이끌리는 성질이 있다.
테이블에서 일정 간격을 두고 강한 자기장을 걸었을 때, 시간이 흐른 뒤에 자성체들이 서로 충돌하여 테이블 위에 남아있는 교착 상태의 개수를 구하는 문제다.
화살표와는 상관없이 N극, S극 쌍을 찾는 문제로 그림에서는 7개이다.
처음에는 어렵게 생각해서 A, B와 같은 자성체들은 없애고 남은 자성체들을 모아서 카운트하려 했다.
하지만 그렇게 하니 정답이 잘 안나와서 다른 방법을 생각하게 되었다.
N극, S극 쌍을 찾는 문제이기 때문에 개수를 카운트해주면 쉽게 찾을 수 있다.
열 우선 순회를 수행하면서 map[i][j] == 1인 N극 자성체를 찾으면 npole = 1으로 N극 자성체가 있다는 표시를 해준다.
그런 다음 map[i][j] == 2인 S극 자성체를 찾았을 때 N극 자성체도 있다면 (npole == 1) 자성체들이 충돌해서 교착 상태를 만든다는 의미이므로 answer++ 해준다.
int answer = 0;
for (int j = 0; j < n; j++) {
int npole = 0;
for (int i = 0; i < n; i++) {
if (map[i][j] == 2 && npole == 1) {
answer++;
npole = 0;
}
else if (map[i][j] == 1) npole = 1;
}
}
코드
C++ 코드
Java 코드
'Problem Solving > SWEA' 카테고리의 다른 글
[SWEA 1215] 회문1 C++ (0) | 2021.07.28 |
---|---|
[SWEA 1213] String C++ (0) | 2021.07.28 |
[SWEA 1210] Ladder1 C++/Java (0) | 2021.07.28 |
[SWEA 1209] Sum C++/Java (0) | 2021.07.28 |
[SWEA 1208] Flatten C++/Java (0) | 2021.07.28 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 위상 정렬
- 두 포인터
- 프로그래머스
- Java
- 정렬
- 구현
- Two Pointer
- 배열
- 분할 정복
- 트리
- 스택
- 브루트포스
- 알고리즘
- 재귀
- 그래프
- programmers
- 큐
- 문자열
- dfs
- C++
- SW Expert Academy
- 이분 탐색
- 백준
- algorithm
- BFS
- SWEA
- Kotlin
- BOJ
- 자바
- 투 포인터
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
글 보관함