SWEA (SW Expert Academy)/D3

[SWEA/D3] 1234 비밀번호 / stack

2023. 5. 7. 23:29

문제 바로가기

 

SW Expert Academy

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

swexpertacademy.com

나의 코드 및 설명

for test_case in range(1,11):
    n, num = map(int,input().split()) #문자의 총 수 , 문자열
    num_list = list(map(int, str(num)))
    i = 0
    while True:
        if i == len(num_list)-1: #i가 리스트 끝까지 온다면 탈출
            break
        if num_list[i] == num_list[i+1]: #만약 붙어있는 값이 같다면
            num_list.pop(i+1) #뒤에있는 값부터 pop
            num_list.pop(i) #그 다음 앞의 값 pop
            i = 0 #다시 처음부터 본다.
        else:
            i+=1 #붙어있는 값이 같지 않다면 i의 값을 계속 증가시킨다.
    print("#{} {}".format(test_case, int("".join(map(str, num_list)))))

다른 코드 및 설명 - stack 활용

for test_case in range(1, 11):
    n, num = input().split()
    num_list = list(num)
    stack = [] #빈 스택 리스트

    for next_num in num_list: #문자열의 문자를 돌아가보면서 확인한다.
        if next_num not in stack: #만약 아직 스택에 없다면,
            stack.append(next_num) #스택에 문자를 추가한다.
        else: #만약 스택에 있는 숫자라면
            if next_num == stack[-1]: #만약 그 문자가, 스택의 가장 최근에 들어간 문자와 같다면,
                stack.pop() #스택에 들어간 문자를 꺼낸다. 
            else: #만약 문자가 스택의 가장 최근에 들어간 문자와 같지 않다면,
                stack.append(next_num) #그냥 스택에 추가해준다.
    print("#{} {}".format(test_case, "".join(stack)))

피드백

스택 자료구조를 활용하면 편한 문제이다. 딱 내가 연습하고 싶었던 문제 유형이다. 스택 리스트를 초기화 해두고, 조건에 해당하는 문자열의 문자를 스택 리스트에 넣어가면서 문제를 해결하면 된다.

처음에 내가 문제를 푼 방식도 스택 자료구조를 어느정도 활용하였다고 볼 수 있지만, 100% 스택 자료구조의 개념을 활용했다고 보기엔 어렵다. 더군다나 붙어있는 문자가 같다면 다시 i=0으로 돌아가서 문자열의 처음부터 다시 반복문을 수행하는 면에서 상당히 비효율적이다고 볼 수 있다. 하지만 stack을 활용한 다른 코드에서는, stack에 넣은 문자와, 문자열의 문자들을 비교하면서 효율적으로 문제를 풀이하였다. 이러한 유형의 문제를 만났을 때 활용할 수 있도록 숙달해야겠다. 

'SWEA (SW Expert Academy) > D3' 카테고리의 다른 글

[SWEA/D3] 5948 새샘이의 7-3-5 게임 / 백트래킹  (1) 2023.05.07
[SWEA/D3] 3499 퍼펙트 셔플 / stack  (0) 2023.05.07
[SWEA/D3] 1228 암호문1  (0) 2023.05.07
[SWEA/D3] 1217 거듭 제곱  (0) 2023.05.07
[SWEA/D3] 4615 재미있는 오셀로 게임  (1) 2023.05.06
'SWEA (SW Expert Academy)/D3' 카테고리의 다른 글
  • [SWEA/D3] 5948 새샘이의 7-3-5 게임 / 백트래킹
  • [SWEA/D3] 3499 퍼펙트 셔플 / stack
  • [SWEA/D3] 1228 암호문1
  • [SWEA/D3] 1217 거듭 제곱
hellosonic
hellosonic
hellosonic
꾸준함
hellosonic
전체
오늘
어제
  • 분류 전체보기 (285)
    • SSAFY (4)
    • 프로그래머스 데브코스 (26)
    • Diary (1)
    • JavaScript (20)
    • ToyPJ (13)
      • Python-Django (13)
    • CS지식 (11)
      • 자료구조 (5)
      • 개발 상식 (2)
      • 네트워크 (4)
    • Baekjoon (141)
      • IM Level (57)
      • DFS와 BFS (21)
      • 백트래킹 (21)
      • DP (3)
      • 이분탐색 (4)
      • 구현 (14)
    • Programmers (13)
      • Lv1 (4)
      • Lv2 (9)
    • SWEA (SW Expert Academy) (52)
      • D1 (5)
      • D2 (7)
      • D3 (40)
    • 이코테 (4)
    • Grammar (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 글쓰기
  • 관리자

공지사항

인기 글

태그

  • 이코테
  • 백준 18870
  • 백준 1157
  • SWEA/D3
  • 프로그래머스 데브코스
  • 리액트 todolist
  • 국비지원교육
  • 그리디
  • 백준 2999
  • 파이썬 1269
  • 백준
  • 프로그래머스
  • 파이썬 1436
  • 파이썬
  • 프론트엔드 데브코스
  • javascript ux
  • 백준 5212
  • 구현
  • SWEA
  • JS
  • 백준 14891
  • 파이썬 11478
  • 자바스크립트
  • 파이썬 2529
  • SWEA 파이썬
  • 자바스크립트 기본기
  • 파이썬 1946
  • SWEA D2
  • SWEA D3
  • 코딩부트캠프

최근 댓글

최근 글

hELLO · Designed By 정상우.
hellosonic
[SWEA/D3] 1234 비밀번호 / stack
상단으로

티스토리툴바

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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