[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)  (14) 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)
청량리 물냉면
청량리 물냉면
프로그래밍 공부를 하고 있습니다. 공부 내용 정리 겸 정보 공유를 목적으로 합니다.
    반응형
  • 청량리 물냉면
    노력중인 블로그
    청량리 물냉면
  • 전체
    오늘
    어제
    • 분류 전체보기 (505)
      • 프로그래밍 (41)
        • Programming (1)
        • C | C++ (6)
        • Java (28)
        • Python (5)
      • 웹 프로그래밍 (108)
        • HTML | CSS (5)
        • JavaScript | TypeScript (41)
        • React (25)
        • Vue.js (0)
        • Next.js (18)
        • Spring & Spring Boot (13)
        • JSP & Servlet (1)
        • DB (4)
      • 웹 프로젝트 (77)
        • 웹 프로젝트 (22)
        • 🥨스낵몰 (3)
        • 👨‍👨‍👧‍👧소셜 가계부 (26)
        • 🌜꿈 일기장 (11)
        • 🔮포트폴리오 사이트 (11)
        • 🏃‍♂️팀 프로젝트: 일정관리 프로그램 (0)
        • 📈팀 프로젝트: AI기반 주식 분석 플랫폼 (0)
        • 😺Just Meow It: 조언 사이트 (2)
        • 📕Workly: 교대근무 다이어리 (1)
      • 앱 프로그래밍 (26)
        • Flutter (24)
        • Kotlin (2)
      • Problem Solving (166)
        • 백준 (52)
        • 프로그래머스 (79)
        • SWEA (29)
      • Computer Science (40)
        • 알고리즘 (14)
        • 컴퓨터 네트워크 (18)
        • 이산수학 (8)
      • Developer (47)
        • 후기 (4)
        • 자료정리 (4)
        • 취업 | 취준 (9)
        • SSAFY (1)
        • 웹개발 교육 프로그램 (9)
        • TIL (20)
  • 블로그 메뉴

    • 홈
    • Github
  • 공지사항

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

  • 태그

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

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

티스토리툴바