[SWEA|파이썬] 1220. [S/W 문제해결 기본] 5일차 - Magnetic (D3)

2023. 5. 10. 01:05·Problem Solving/SWEA
문제

https://tinyurl.com/2jsfjmya

 

SW Expert Academy

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

swexpertacademy.com

 

 

💡문제풀이 아이디어

테이블 상단이 N극, 하단이 S극이므로 교착상태의 형태는

N극 (1)

S극 (2)

이다.

👉 이런 형태를 하고 있는 자석들의 갯수를 세면 교착상태의 갯수를 알 수 있다.

 

❓이유

👉 N극은 테이블 하단 S극의 영향을 받아 아래로 내려가고 싶어하는데 위쪽으로 올라가려는 S극이 아래에 걸려 움직일 수 없다.

👉 마찬가지로 S극 역시 테이블 상단으로 움직이고 싶어하지만 아래로 내려가려고 하는 N극이 위에 걸려 있기 때문에 움직일 수 없다.

 

 

🐍파이썬

스택을 이용한 풀이

T = 10
for test_case in range(1, T + 1):
table = int(input())
mgt = [list(map(int, input().split())) for _ in range(100)]
cnt = 0
#열 순회
for c in range(table):
stack = []
for r in range(table):
if not stack and mgt[r][c] == 1: #스택이 비어있고 N극(빨간색, 1)인 경우
stack.append(1) #1넣기
elif stack and mgt[r][c] == 2: #스택에 1이 들어있고 S극(파란색, 2)인 경우
cnt += stack.pop() #교착상태 check
print("#{} {}".format(test_case, cnt))

한 열에서, 스택에 1(N극)이 들어있는 상태에서 자석 2(S극)이 존재한다면 무조건 교착상태가 된다.

 

❓이유

N극 (1) --- 스택에 들어있음

S극 (2) --- mgt[r][c]

형태가 위에 명시한 교착상태의 자석 형태와 동일하다.

따라서 이미 들어있던 1을 빼내어 answer에 더해 교착상태의 갯수를 카운팅한다.


플래그를 이용한 풀이

T = 10
for test_case in range(1, T + 1):
_ = int(input())
arr = []
ans = 0
for _ in range(100):
arr.append(list(map(int, input().split())))
for i in range(100):
n_flag = 0
s_flag = 0
for j in range(100):
if arr[j][i] == 1:
n_flag = 1
s_flag = 0
elif arr[j][i] == 2:
s_flag = 1
n_flag = 0
if arr[j][i] == 0:
if n_flag == 1:
arr[j][i] = 1
elif s_flag == 1:
arr[j][i] = 2
for i in range(100):
for j in range(99):
if arr[j][i] == 1 and arr[j+1][i] == 2:
ans += 1
print("#{} {}".format(test_case, ans))

각 열을 순회하며 arr[j][i]가 1(N극)인 경우 n_flag를 1로 만들고 s_flag를 0으로 만든다.

마찬가지로 arr[j][i]가 2(S극)인 경우 s_flag를 1로 만들고 n_flag를 0으로 만든다.

값이 0인 원소를 만나면 켜져있는 플래그 대로 0또는 1로 원소값을 대체한다. 👉 자성에 따라 밀려난 자석들 표현

 

두번째 for문에서는, 한 열에서 현재 행의 원소값이 1(N극)이고 다음 행의 원소값이 2(S극)인 경우만의 갯수를 세어 교착상태의 갯수를 카운팅한다. 

N극 (1)

S극 (2)

저작자표시 비영리 변경금지 (새창열림)

'Problem Solving > SWEA' 카테고리의 다른 글

[SWEA|파이썬] 2814. 최장 경로 (D3)  (2) 2023.05.12
[SWEA|파이썬] 1216. [S/W 문제해결 기본] 3일차 - 회문2 (D3)  (8) 2023.05.11
[SWEA|파이썬] 1225. [S/W 문제해결 기본] 7일차 - 암호생성기 (D3)  (0) 2023.05.10
[SWEA|파이썬] 2817. 부분 수열의 합 (D3)  (0) 2023.05.09
[SWEA|파이썬] 1209. [S/W 문제해결 기본] 2일차 - Sum (D3)  (0) 2023.05.09
[SWEA|파이썬] 1215. [S/W 문제해결 기본] 3일차 - 회문1 (D3)  (0) 2023.05.08
'Problem Solving/SWEA' 카테고리의 다른 글
  • [SWEA|파이썬] 1216. [S/W 문제해결 기본] 3일차 - 회문2 (D3)
  • [SWEA|파이썬] 1225. [S/W 문제해결 기본] 7일차 - 암호생성기 (D3)
  • [SWEA|파이썬] 2817. 부분 수열의 합 (D3)
  • [SWEA|파이썬] 1209. [S/W 문제해결 기본] 2일차 - Sum (D3)
청량리 물냉면
청량리 물냉면
프로그래밍 공부를 하고 있습니다. 공부 내용 정리 겸 정보 공유를 목적으로 합니다.
  • 청량리 물냉면
    노력중인 블로그
    청량리 물냉면
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 프로그래밍
        • Programming
        • C | C++
        • Java
        • Python
      • 웹 프로그래밍
        • HTML | CSS
        • JavaScript | TypeScript
        • React
        • Vue.js
        • Next.js
        • Spring & Spring Boot
        • JSP & Servlet
        • DB
      • 웹 프로젝트
        • 웹 프로젝트
        • 🥨스낵몰
        • 👨‍👨‍👧‍👧소셜 가계부
        • 🌜꿈 일기장
        • 🔮포트폴리오 사이트
        • 🏃‍♂️팀 프로젝트: 일정관리 프로그램
        • 📈팀 프로젝트: AI기반 주식 분석 플랫폼
        • 😺Just Meow It: 고양이의 조언
      • 앱 프로그래밍
        • Flutter
        • Kotlin
      • Problem Solving
        • 백준
        • 프로그래머스
        • SWEA
      • Computer Science
        • 알고리즘
        • 컴퓨터 네트워크
        • 이산수학
      • Developer
        • 후기
        • 자료정리
        • 취업 | 취준
        • 웹개발 교육 프로그램
        • TIL
  • 블로그 메뉴

    • 홈
    • Github
  • 공지사항

    • 프로그래밍 공부 중😊
  • 인기 글

  • 태그

    구현
    포트폴리오
    ZeroCho
    spring boot
    공식문서
    리액트
    bfs
    mysql
    웹사이트
    자바스크립트
    알고리즘
    프로그래머스
    Jiraynor Programming
    백준
    자바
    플러터
    d3
    Next.js
    컴퓨터네트워크
    클론 프로젝트
    SWEA
    파이썬
    뉴렉처
    React
    타입스크립트
    AWS
    강의내용정리
    Til
    프로젝트
    블로그 제작
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
청량리 물냉면
[SWEA|파이썬] 1220. [S/W 문제해결 기본] 5일차 - Magnetic (D3)

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.