[코딩테스트] 프로그래머스 - 불량 사용자

2024. 4. 30. 16:48·코딩테스트
목차
  1. 1. 아이디어 
  2. 2. 시간복잡도
  3. 3. 변수
  4. Code

1. 아이디어 

▪ 아이디와 제재 아이디를 입력 받았을때 해당 아이디가 제재 대상인지 확인하는 함수 작성 

▪ dfs로 구현

   - i는 현재까지 확인한 불량 사용자 아이디 목록 인덱스

   - i가 불량 사용자 아이디 목록의 길이와 같으면

      - chk 리스트를 정렬하고 하나의 문자열로 합쳐서 rs 리스트에 append -> 추후 중복값을 없애기 위함

   - 아이디 목록에서 아이디를 하나씩 꺼내서 다음을 수행

      - 해당 아이디를 방문하지 않았고, 현재 인덱스의 불량 사용자 아이디와 비교했을때 제재 대상에 해당할 경우

         - 해당 아이디를 방문여부 리스트에 추가하기

         - dfs(i+1) 수행

         - 해당 아이디를 방문여부 리스트에서 제거하기 

   - set 함수를 이용하여 중복되는 값 제거하고 rs의 개수 return

2. 시간복잡도

▪ O(L*(V+E)) = O(L*(M+ MN)) = O(LMN) = 8^3

▪ N: user_id 배열의 크기

▪ M: banned_id 배열의 크기

▪ L: user_id 배열의 원소값 길이

3. 변수

▪ 현재 제재한 아이디를 저장할 리스트(chk): str[]

▪ 제재한 아이디 경우의 수를 기록할 리스트(rs): str[]

Code

def check(user_id, banned_id):
if len(user_id) != len(banned_id):
return False
for i in range(len(banned_id)):
if banned_id[i] == "*":
continue
if user_id[i] != banned_id[i]:
return False
return True
def solution(user_id, banned_id):
def dfs(i):
global chk, rs
if i == len(banned_id):
rs.append(''.join(sorted(chk)))
return
for each_user_id in user_id:
if each_user_id not in chk and check(each_user_id, banned_id[i]) == True:
chk.append(each_user_id)
dfs(i+1)
chk.pop()
global chk, rs
chk = []
rs = []
dfs(0)
answer = len(set(rs))
return answer

 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

'코딩테스트' 카테고리의 다른 글

[코딩테스트] 프로그래머스 - 스티커 모으기(2)  (1) 2024.04.04
[코딩테스트] 프로그래머스 - 베스트앨범  (0) 2024.03.30
[코딩테스트] 프로그래머스 - 기지국 설치  (0) 2024.03.29
[코딩테스트] 프로그래머스 - 단속카메라  (1) 2024.03.29
[코딩테스트] 프로그래머스 - 숫자 게임  (1) 2024.03.29
  1. 1. 아이디어 
  2. 2. 시간복잡도
  3. 3. 변수
  4. Code
'코딩테스트' 카테고리의 다른 글
  • [코딩테스트] 프로그래머스 - 스티커 모으기(2)
  • [코딩테스트] 프로그래머스 - 베스트앨범
  • [코딩테스트] 프로그래머스 - 기지국 설치
  • [코딩테스트] 프로그래머스 - 단속카메라
Doodo
Doodo
DoodoDoodo 님의 블로그입니다.
  • Doodo
    Doodo
    Doodo
  • 전체
    오늘
    어제
    • 분류 전체보기 (192)
      • CS (17)
        • Network (11)
        • Database (6)
      • Language (19)
        • Python (11)
        • SQL (6)
        • R (2)
      • Linux (17)
      • DevOps (35)
        • Git (7)
        • Docker (8)
        • Kubernetes (9)
        • GCP (4)
        • AWS (7)
      • Data Engineering (50)
        • 책 리뷰 (14)
        • Airflow (35)
        • Redis (1)
      • DBMS (21)
        • CUBRID (21)
      • ML & DL (2)
      • 코딩테스트 (24)
      • 프로젝트 (7)
        • 서울시 대기현황 데이터 적재 프로젝트 (4)
        • CryptoStream (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
Doodo
[코딩테스트] 프로그래머스 - 불량 사용자
상단으로

티스토리툴바

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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