[boj] 12927번: 배수 스위치

2023. 1. 24. 11:10·Problem Solving/Baekjoon

출처 : https://www.acmicpc.net/problem/12927

 

12927번: 배수 스위치

첫째 줄에 전구의 상태가 1번 전구부터 차례대로 주어진다. Y는 전구가 켜 있는 경우, N은 전구가 꺼져있는 경우이다. 전구의 개수는 1보다 크거나 같고 1,000보다 작거나 같은 자연수이다.

www.acmicpc.net

 

 

1. 문제 설명 

강호는 전구를 N개를 가지고 있다. 1번부터 N번까지 번호가 매겨져있고, 전구는 켜져있거나 꺼져있다. 전구의 개수만큼 스위치 N개를 가지며, 1번부터 N번까지 번호가 매겨져 있다. i번 스위치를 끄게 되면 i의 배수 번호를 가지는 전구의 상태를 모두 반전시킨다.

 

 

 


2. 접근 방식 

해시맵을 사용하였다. (특별한 알고리즘은 없다.)

 

 

 

 


3. 주석 달기 (변수 설명, 각 줄마다 문장으로 설명, 함수 설명)

import sys
from collections import defaultdict
input = sys.stdin.readline
lights = list(input().rstrip())
dic = defaultdict(str)
for i in range(1, len(lights)+1):
    dic[i] += lights[i-1]

flag = 'Y'
idx = 1  
count = 0
while idx <= len(dic):
    if flag != dic[idx] and len(set(dic.values())) == 1: # flag가 'N'이고 dic.values()의 중복을 제거한 길이가 1인 경우 탈출!
        break

    for k, v in dic.items():
        if v == 'Y':  # => k번째가 켜져있다는 것은 -> k의 배수만큼 모든 전구를 꺼야한다.
            idx = k   # k를 idx에 넣는다. # idx 변수에 따로 저장 
            break

    for k, v in dic.items():
        if k % idx == 0:  # 배수만큼 모든 전구를 꺼준다. 
            if v == flag: 
                dic[k] = 'N'
            else:
                dic[k] = 'Y'
    count += 1

print(count)

 

 


4. 분석

1. Time : O(N^2)   => 전구의 개수는 (1 <= N <= 1000) 이므로 1000 * 1000 = 10 ^ 6. 브루트포스로 충분하다. 
2. Space :
3. 소요시간 : 20분
4. 제출 횟수 (무작정 제출하기 않기)  : 2회 
5. 어려웠던 부분과 해결한 방법 :
6. 실수가 줄어들었는가 ? 

'Problem Solving/Baekjoon' 카테고리의 다른 글
  • [boj] 1541번: 잃어버린 괄호
  • [boj] 25044번: 에어컨
  • [boj] 11399번: ATM
  • [boj] 1026번: 보물
kimdozzi
kimdozzi
끝까지 포기하지 않으면, 내가 다 이겨!
  • kimdozzi
    도브로
    kimdozzi
  • 전체
    오늘
    어제
    • 분류 전체보기 (132)
      • Problem Solving (49)
        • Baekjoon (29)
        • Programmers (0)
        • LeetCode (17)
        • 삼성 유형 (2)
      • Computer Science (27)
        • Operating System (2)
        • Algorithms (13)
        • Network (6)
        • DataBase (6)
      • Backend (33)
        • JavaScript (0)
        • TypeScript (6)
        • Java (7)
        • Spring Boot (7)
        • Spring Security (6)
        • JPA (2)
        • Mybatis (1)
        • Junit5 (1)
        • Redis (3)
      • DevOps (14)
        • Git, Github (5)
        • docker (4)
        • AWS (3)
        • nginx (2)
      • etc (6)
        • IntelliJ (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 티스토리
    • 설정
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    인덱서블 타입
    티스토리챌린지
    S3
    AWS
    오프라인 쿼리
    타입스크립트
    구간 업데이트
    삼성기출
    인덱스 시그니처
    interface
    온라인 쿼리
    구간합
    도커
    python
    오블완
    컨테이너
    imos법
    docker
    세그먼트 트리
    백준
    누적합
    알고리즘
    docker image
    segment tree
    TypeScript
    PrefixSum
    파이썬
    인터페이스
    Bucket
    점 업데이트
    CORS
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
kimdozzi
[boj] 12927번: 배수 스위치
상단으로

티스토리툴바