티스토리 뷰

Problem Solving/SWEA

[SWEA 1220] Magnetic C++/Java

유자애옹 2021. 7. 28. 15:56
 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

 

문제풀이

 

 

테이블 위에 자성체들이 있다.

푸른 자성체의 경우 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
링크
«   2024/05   »
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
글 보관함