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 | 31 |
Tags
- ChatGPT
- SQ3R
- 성장형마인드셋
- 자바
- 네이티브애플리케이션
- 파일사용권한
- API명세서
- API
- 재귀적사고
- Java
- string메서드
- 99클럽
- 4A피드백
- 루트사용자
- 참조변수타입변환
- 백준
- 코딩테스트
- 배열탐색
- 제너릭메서드
- 날씨API
- openapi
- Spring
- 스레드동기화
- staging_area
- SQL
- 프로그래머스
- 향상된for문
- 프로젝트
- 스프링
- 동전교환알고리즘
Archives
- Today
- Total
개발 공부용
1220. [S/W 문제해결 기본] 5일차 - Magnetic 본문
문제
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com

붉은 자성체는 S극에 이끌리고 푸른 자성체는 N극에 이끌린다.
만약 A, B로 표시된 자성체들과 같이, 이끌리는 극에 도달하기까지 다른 색의 자성체로 방해되지 않는다면 테이블 아래로 떨어진다.
그러나 C, D, F, E와 같이 다른 자성체와 충돌한 경우 교착상태에 빠져 움직이지 않게 된다.
발생한 교착상태의 개수를 구하시오.
입력
- 10개의 테스트 케이스
- 첫 줄: 정사각형 테이블 한 변의 길이(항상 100임)
- 둘째 줄 ~ : 100x100 크기의 테이블 초기 모습(1은 N극 성질의 자성체, 2는 S극 성질의 자성체)
100
1 0 0 0 0 0 0 0 2 0 0 0 1 0 1 1 0 2 0 0 1 0 2 0 2 2 1 0 0 0 0 0 1 0 0 2 0 0 0 0 0 1 2 0 0 0 1 1...
0 0 0 0 0 0 0 0 0 0 1 0 0 2 0 0 0 0 0 2 0 0 1 0 0 0 0 0 1 2 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0...
0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 2 2 0 2 0 0 0 0 0 1 0 0...
0 0 0 2 0 0 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 1 0 1 0 0 0 0 0 0 2 0 2 0...
0 0 0 0 2 0 2 0 0 0 2 0 0 0 0 0 0 2 1 1 0 2 0 0 0 1 2 2 2 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0...
0 0 2 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0...
...
출력
- #테스트케이스번호 교착 상태의 개수
#1 471
#2 446
풀이
for i in range(1, 11):
N = int(input().strip())
table = [input().split() for _ in range(N)]
deadlock = 0
for col in range(N):
one = False
for row in range(N):
if "1" == table[row][col]:
one = True
elif "2" == table[row][col] and one == True:
deadlock += 1
one = False
print(f"#{i} {deadlock}")
1은 N극 성질을 가지는 자성체, 2은 S극 성질을 가지는 자성체이다. 테이블 위에 N극, 아래에 S극이 있다.
따라서 1은 아래에 2이 없으면 제거되고, 있으면 교착 상태가 발생한다. <= 이 부분이 핵심
2은 위에 1이 없으면 제거되고, 있으면 교착 상태가 발생한다.
위에서부터 아래 방향으로 하나의 요소씩 입력받은 테이블을 읽을 때
1을 만난 뒤 2를 만나면 교착 상태가 발생한다.
따라서 1 만남 여부를 기록하고, 그 뒤에 2를 마주했을 때 교착 상태 횟수를 +1 한다.
카운팅 후에는 다시 1 만남 여부를 초기화한다.
'코딩 테스트' 카테고리의 다른 글
| 팰린드롬 | 1216. [S/W 문제해결 기본] 3일차 - 회문2 (0) | 2025.11.17 |
|---|---|
| 카운팅 정렬 | 1221. [S/W 문제해결 기본] 5일차 - GNS (0) | 2025.11.13 |
| 큐 | 1225. [S/W 문제해결 기본] 7일차 - 암호생성기 (0) | 2025.11.10 |
| 1229. [S/W 문제해결 기본] 8일차 - 암호문2 (0) | 2025.11.10 |
| 1230. [S/W 문제해결 기본] 8일차 - 암호문3 (0) | 2025.11.10 |