[백준 1700 / 파이썬(Python)] 멀티탭 스케줄링

2022. 7. 28. 13:43·etc/Algorithm study

[백준 1700 / 파이썬(Python)] 멀티탭 스케줄링

문제 풀이

  • 이 문제는 그리드 알고리즘이므로 문제를 풀기 위한 기준을 나누어줬다.

1. 멀티탭에 이미 전기용품이 꽂혀있을 때: continue

 

2. 멀티탭에 구멍이 남아있을 때: 전기용품을 꽂아주고 continue

 

3. 멀티탭에 구멍이 없어 전기용품을 바꿔줘야할 때:

        3-1 남은 순서 중에 계속 써야하는 전기용품이 없을 때: 멀티탭에서 뺄 전기용품의 위치를 바꾸어준 뒤 break

        3-2 계속 전기용품을 써야할 때: 이후 순서에서 써야하는 전기용품 중 가장 멀리있는 것으로 위치를 바꾸고, 멀티탭에서 뺄 전기용품의 위치를 바꾸어준다.

 

 

 

틀린 풀이

idx와 farN의 초기화가 진행되지 않아 27%에서 틀렸다.

n, k = map(int, input().split())
orderArr = list(map(int, input().split()))


plug = []
count = 0
idx = 0 # 멀티탭에서 뺄 전기용품의 위치
farN = 0 # 써야하는 전기 용품 중 가장 먼 것의 위치

for i in range(k):
    if orderArr[i] in plug: # 멀티탭에 이미 꽂혀있음
        continue 
      
    if len(plug) < n:  # 멀티탭에 구멍이 남아있을 때
        plug.append(orderArr[i])
        continue 
    
    for j in range(n): #멀티탭에 전기용품 플러그를 바꿔줘야할 때
        if plug[j] not in orderArr[i:]: #남은 순서 중에 계속 써야하는 전기용품이 없을 때
            idx = j
            break
        else:
            if farN < orderArr[i:].index(plug[j]): #계속 써야하는 전기용품이 있을 때 
              farN = orderArr[i:].index(plug[j])
              idx = j
    plug[idx] = orderArr[i]
    count += 1
print(count)

 

맞은 풀이

for문 안으로 넣어주어 초기화를 해주자 문제 풀이가 맞았다.

n, k = map(int, input().split())
orderArr = list(map(int, input().split()))

plug = []
count = 0

for i in range(k):
    if orderArr[i] in plug: # 멀티탭에 이미 꽂혀있음
        continue 
      
    if len(plug) < n:  # 멀티탭에 구멍이 남아있을 때
        plug.append(orderArr[i])
        continue

    
    idx = 0 # 멀티탭에서 뺄 전기용품의 위치
    farN = 0 # 써야하는 전기 용품 중 가장 먼 것의 위치
    
    for j in range(n): #멀티탭에 전기용품 플러그를 바꿔줘야할 때
        if plug[j] not in orderArr[i:]: #남은 순서 중에 계속 써야하는 전기용품이 없을 때
            idx = j
            break
        else:
            if farN < orderArr[i:].index(plug[j]): #계속 써야하는 전기용품이 있을 때 
              farN = orderArr[i:].index(plug[j])
              idx = j
    plug[idx] = orderArr[i]
    count += 1
print(count)

'etc > Algorithm study' 카테고리의 다른 글

[백준 1260 / Python(파이썬)] DFS와 BFS  (0) 2022.10.04
[백준 1197 / Python(파이썬)] 최소 스패닝 트리  (0) 2022.07.29
[백준 14179/파이썬(Python)] 빗물  (0) 2022.07.18
CH 06. 스택(Stack)  (0) 2022.03.24
Ch 05. 큐(Queue)  (0) 2022.03.24
'etc/Algorithm study' 카테고리의 다른 글
  • [백준 1260 / Python(파이썬)] DFS와 BFS
  • [백준 1197 / Python(파이썬)] 최소 스패닝 트리
  • [백준 14179/파이썬(Python)] 빗물
  • CH 06. 스택(Stack)
쏘꾸
쏘꾸
  • 쏘꾸
    SOSO
    쏘꾸
  • 전체
    오늘
    어제
    • 분류 전체보기
      • WEB
        • Web Hacking
      • Mobile
        • Android Hacking
        • iOS Hacking
      • Programming
        • C
      • etc
        • Algorithm study
        • Practical Things
      • CVE
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    iOS 탈옥
    mitm relay
    android hacking
    iOS 16
    winra1n
    ios17
    iphone x
    IOS
    burp suite
    tcp
    노션
    pentest
    Jailbreak
    Notion
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
쏘꾸
[백준 1700 / 파이썬(Python)] 멀티탭 스케줄링
상단으로

티스토리툴바