[SWEA|파이썬] 1240. [S/W 문제해결 응용] 1일차 - 단순 2진 암호코드 (D3)

2023. 5. 14. 17:11·Problem Solving/SWEA
반응형
문제

https://tinyurl.com/2l8cryve

 

SW Expert Academy

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

swexpertacademy.com

 

 

🐍파이썬
T = int(input())
for test_case in range(1, T+1):
    n, m = map(int, input().split())
    code = []
    dic = {"0001101":0, "0011001":1, "0010011":2, "0111101":3,
           "0100011": 4, "0110001": 5, "0101111": 6, "0111011": 7,
           "0110111": 8, "0001011": 9}
    code_arr = []
    for _ in range(n):
        a = list(map(int, input()))
        if 1 in a:	#0만 든 배열은 skip
            code = a[::-1]	#1이 든 가장 마지막 배열만 뒤집어 저장
    j = 0
    while j < len(code):
        arr = ''.join(map(str, code[j:j+7][::-1]))
        if arr[-1]=="1" and arr in dic.keys():
            code_arr.insert(0, dic[arr])
            j+=7
        else:
            j+=1
    a = sum(code_arr[0::2])	#홀수자리 수만 추출
    b = sum(code_arr[1::2])	#짝수자리 수
    if (a*3+b)%10==0:
        ans = a+b
    else:
        ans = 0
    print("#{} {}".format(test_case, ans))

💡 아이디어 & 풀이과정

1️⃣ 암호코드의 특성상 마지막 자리가 모두 1로 끝나기 때문에, 이에 착안하여 code 변수에 입력받은 문자열을 뒤집어 저장했다.

2️⃣ 뒤에서부터 j를 1씩 늘려가며 1가 언제 등장하는지 확인한다. 1이 등장하면 그로부터 7개의 문자열이 암호라는 뜻이므로 7개씩 숫자를 묶는다. 이때 j는 +1이 아닌 +7이 되어야 이미 묶여있는 문자열을 건너뛴 다음 글자를 탐색할 수 있다.

3️⃣7개씩 묶인 이 문자열의 순서를 뒤집은 후(뒤에서부터 search중이므로 원상복구해야 함) dic에서 문자열과 key-value로 연결된 숫자를 찾아 배열의 가장 앞부분에 삽입한다. (뒤에서부터 카운팅하고 있므로 append(dic[arr]) 대신 insert(0, dic[arr])사용해야 함)

4️⃣ 암호코드의 진위를 확인한 뒤 진위판별을 통과하면 각 자리 수의 합을, 진위판별을 통과하지 못하면 0을 출력한다.

 

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

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

[SWEA|파이썬] 11315. 오목 판정 (D3)  (0) 2023.05.16
[SWEA|파이썬] 1217. [S/W 문제해결 기본] 4일차 - 거듭 제곱 (D3)  (0) 2023.05.15
[SWEA|파이썬] 1221. [S/W 문제해결 기본] 5일차 - GNS(D3)  (0) 2023.05.14
[SWEA|파이썬] 1493. 수의 새로운 연산 (D3)  (0) 2023.05.14
[SWEA|파이썬] 1860. 진기의 최고급 붕어빵 (D3)  (0) 2023.05.13
[SWEA|파이썬] 2814. 최장 경로 (D3)  (2) 2023.05.12
'Problem Solving/SWEA' 카테고리의 다른 글
  • [SWEA|파이썬] 1217. [S/W 문제해결 기본] 4일차 - 거듭 제곱 (D3)
  • [SWEA|파이썬] 1221. [S/W 문제해결 기본] 5일차 - GNS(D3)
  • [SWEA|파이썬] 1493. 수의 새로운 연산 (D3)
  • [SWEA|파이썬] 1860. 진기의 최고급 붕어빵 (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
  • 공지사항

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

  • 태그

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

  • hELLO· Designed By정상우.v4.10.3
청량리 물냉면
[SWEA|파이썬] 1240. [S/W 문제해결 응용] 1일차 - 단순 2진 암호코드 (D3)
상단으로

티스토리툴바