구현 18

[백준/python] 16960: 스위치와 램프

문제 보러가기! 닻과매 님이 올리신 백준 문제집을 보고 너무 풀고 싶어져서, 오랜만에 풀었다 ㅎㅎ 정말 접근 아이디어가 재미있었다! N-1 개의 스위치를 눌러서 모든 램프를 켤 수 있는지 판단해야 했다. N-1개의 스위치로도 모든 램프를 켤 수 있으려면, 어느 한 스위치에 연결된 램프들은 모두 다른 스위치와 연결되어 있어야 한다는 아이디어가 중요했다 ! 상세한 설명은 주석으로..ㅎㅎ # N-1 개의 스위치를 눌러서 모든 램프를 켤 수 있으면? # 어느 한 스위치에 연결된 램프들은 모두 다른 스위치와 연결되어 있어야 함. # 그러면 1 출력, 아니면 0 출력 from collections import defaultdict N,M =map(int,input().split()) lamps_connect_swi..

[백준/파이썬] 1966: 프린터 큐

문제 풀러 가기!! 큐, 구현 문제였다.! 큐를 두개 만들어서 풀었다. 하나는 문서 중요도들만 내림차순으로 담은 큐(1번 큐라고 하겠다), 하나는 tuple(문서 중요도, 문서 번호)로 묶어서 담은 큐(2번 큐라고 하겠다)! 처음 프린터 큐에서 M번째 문서를 몇 번째로 프린트했는지를 구하는 것이라서, 문서 번호(처음 프린터 큐에서 몇 번째로 위치하는지)를 저장해야 한다. 두번째 큐의 맨 앞에 있는 것을 뽑으면(popleft) 인쇄할 차례가 된 문서가 된다. 그 문서의 중요도가 그때 있는 문서들 중에서 가장 높으면(첫번째 큐의 맨 앞 원소를 확인하기), 프린트를 했다고 본다. 프린트를 했으면 첫번째 큐에서도, 두번째 큐에서도 맨 앞에 있는 원소를 빼주면 된다. 프린트를 하지 않으면, 두번째 큐의 맨 앞 원..

[백준/파이썬] 14502: 연구소

문제 풀러 가기!! 설명 🤔😊 조합 + 구현 + BFS로 풀었다 ㅎㅎ 벽을 꼭 3개 새로 세워야 한다.-> 어디에 세울까?? N, M이 최대 8이니까 최대 64칸이 나온다. 64칸 중에 3칸에 벽을 세우는 경우를 구한다. 즉 조합으로 어디에 벽을 새로 세울지 구했다. 이 경우들을 쭉~~ 봐줬다. 빈칸에만 새로 벽을 세울 수 있으니 빈칸인지 확인하고, 빈칸이면 벽을 세웠다. 벽을 세운 후, 바이러스가 퍼져나가는 걸 시뮬레이션했다. 이때 BFS를 사용했다. 마지막으로 빈 칸 수를 세고, 정답을 업데이트하면 된다! 코드 👏💖 import sys from itertools import combinations from collections import deque from copy import deepcopy in..

[백준/파이썬] 1148: 단어 만들기

문제 보러 가기! 설명 😎 구현 문제였다! 처음에는 퍼즐판이 주어져서 뭔가 2차원 배열로 풀어야 하나? 했지만, 문제를 찬찬히 읽어보니 아니었다. 표의 정중앙에 있는 글자만 꼭 사용해야 하니까, 그 글자만 중요하게 고려하면 된다. 또 어떤 글자를 정중앙에 놓았을 때 정답 개수가 가장 적게/많게 되는지를 찾아야 한다! 그러니까 각 글자가 사용되는 횟수를 구하면 된다. 퍼즐판의 문자들이 주어질 때, 그 문자를 가지고 사전의 단어를 만들 수 있는지 본다. 만들 수 있다면, 각 글자의 사용 횟수를 1씩 더한다. 사전의 단어를 모두 본 후에, 글자 중에 가장 적게/많이 사용하는 글자(사전순)와 그 개수를 출력하면 된다!! 헷갈렸던 부분 🤔 퍼즐판에서 주어진 문자들을 가지고, 사전의 단어를 만들 수 있는지 체크하는..

[백준/파이썬] 24467: 혼자 하는 윷놀이

문제 보러가기 구현, 시뮬레이션 문제였다. 처음에는 '어떻게 윷판 위 현재 위치를 나타내지?' 고민했는데, 4가지 루트가 있다는 걸 보고 그걸 이용해서 문제를 풀었다. 현재 어떤 루트로 가고 있는지 나타내는 course, 말의 위치를 idx로 두었다. 위 그림 순서와는 다르게, 나는 빙~ 돌아가는 걸(위 그림에서 4번) 0, 첫번째 갈림길에서 꺾이는 걸(위 그림에서 3번) 1, 젤 빠른 길(위 그림에서 1번)을 2, 위 그림에서 2번을 3으로 뒀다. 그 뒤에 윷을 던져서 앞으로 가는 칸수에 따라서 idx를 바꿔준다. 이때 주의점은 다 앞면이거나 다 뒷면이면, 윷 던질 기회를 한번 더 준다는 것! 그래서 while을 이용해서 처리했다. 지름길을 만나면 지름길로 간다. 위에서 바꾼 idx를 이..

[백준/파이썬] 16196: 중국 신분증 번호

https://www.acmicpc.net/problem/16196 16196번: 중국 신분증 번호 첫째 줄에 신분증 번호가 주어진다. 신분증 번호는 18자리이고, 처음 17자리는 0부터 9까지 숫자로만 이루어져 있다. 마지막 1자리는 0부터 9까지 숫자이거나 'X'이다. 둘째 줄에는 올바른 지역 코 www.acmicpc.net 그냥 꼼꼼하게 조건을 고려해서 풀면되는 문제였다!!!! 고려할 게 많은데 자꾸 빠뜨려서.. 많이 틀렸다. - 지역 코드 6자리 -> 가능한 지역 코드를 리스트에 저장한 후 in으로 판단함 - 생일 코드 -> 년, 월, 일 따로 처리. 일을 처리할 때 그 달이 몇 일까지 있는지(30 or 31), 2월인 경우 윤년인지 체크해야 함 - 순서 코드 -> 000은 안된다. 짝수이면 여자..

[백준-파이썬] 2239: 스도쿠, 2580: 스도쿠

TMI 🤸‍♀️ 싸피 자치회 회의 - 스터디를 하고 나니 좀 피곤했다. 스터디의 문제는 좀 어렵고 잘 이해가 안돼서ㅠㅠ 풀 문제를 찾다가 이 문제(2580)를 찾았다. 문제 보러 가기 문제를 읽다 보니 전에 비슷한 문제를 푼 생각이 났다. 바로 이 문제(2239)였다. 반 년 전에, 내가 세네 번째로 푼 백준 골드 문제였던 걸로 기억한다..! 추억의 문제 >

[백준-파이썬] 16919: 봄버맨 2

문제 풀러 가기! ㅠㅠ 많이 틀리다가 맞았다... 풀이 1초) 처음 설치된 것과 같음 2초) 모든 칸에 폭탄 설치됨. 3초) 처음에 설치되었던 폭탄이 폭발함. 4초) 모든 칸에 폭탄이 설치됨. 5초) 2초 대에 설치되었던 폭탄들 중 남은 폭탄들이 폭발함. 6초) 모든 칸에 폭탄이 설치됨. 7초) 4초 대에 설치되었던 폭탄들 중 남은 폭탄들이 폭발함. 예제의 그림을 보면 이해할 수 있을 것이다! 이렇게 해서 짝수 초일 때는 무조건 모든 칸에 폭탄이 설치되어있다는 걸 알 수 있다. 또 홀수 초의 경우에도 4초 주기로 돌아가는 걸 볼 수 있다. 그래서 %4를 이용해서 경우를 구해서 풀었다. N==1일 때 경우는 따로 빼둬야 한다. 그건 이 게시물을 보고 알았다.. 틀렸던 부분.... 진짜 모르겠어서, 친구한테..

[백준-파이썬] 20165: 인내의 도미노 장인 호석

문제 풀러 가기! 꼼꼼히 천천히 구현했다~ 사 방향을 일일이 코드로 짜서 좀 긴데ㅠ, 줄일 수 있을 것 같기도 하다. 🧐 헷갈렸던 부분 이미 넘어진 격자의 도미노를 공격수가 무너뜨리려고 할 때는 공격수 점수를 카운트 하면 안된다! x, y, d 는 map(int,input().split())으로 하면 안되는데 해서, 잠깐 에러를 만났다.. d는 숫자가 아니고 알파벳이다.. 다시 도미노를 쌓을 때는, 원래 가지고 있던 높이 만큼 쌓아줘야 하므로 그 높이를 origin_height에 copy.deepcopy를 이용해서 저장해뒀다. 👩‍💻 코드 import sys, collections, copy input = sys.stdin.readline N, M, R = map(int, input().split()) ..

[백준-파이썬] 17349: 1루수가 누구야

문제 보러 가기! 구현 문제! 처음에는 엄청 간단하게만 생각했는데, 아니었다. 생각해야 할 게 많았다.. 나는 한 명씩 거짓말쟁이로 가정하고, 정답이 될 수 있는 것들을 다 모았다. 정답이 될 수 있는 게 하나라면, 정답으로 출력하면 된다. 정답이 될 수 있는 게 없거나, 여러 개라면 정답이 확정이 안되는 것이니까 -1를 출력하면 된다. 한 명을 거짓말쟁이로 가정한 상태에서 정답이 뭐가 될 수 있는지 봐주기 위해서, 매번 baseman_arr 리스트를 만들었다. 1번~ 9번에 대해서, 1루수라고 하는지 아니라고 하는지를 저장했따. 초기값은 -1로 해둔 후에, 해당 번호의 사람이 1루수라고 하면 1을, 아니라고 하면 0을 저장했다. 모순이 생긴다면 바로 break를 했고, 그렇지 않다면 모든 사람의 말을 ..

728x90