본문 바로가기

분류 전체보기308

[백준 1018번] 체스판 다시 칠하기 # 사실 이 문제는 20일정도 전에 먼저 시도해보았던 문제이다. 하지만 그 때는 접근 방법을 정확히 파악하지 못해서 ( 너무 어렵게 생각했던것 같다 ) 예외가 많은 코드를 짜서 제출했던것 같다. 이 문제를 풀 때 처음 생각했던 것은, 주어진 보드는 무조건 8x8보다 크기 때문에 8x8 사이즈의 직사각형을 움직여가며 바꿔야 하는 횟수를 count, 가장 적은 횟수를 출력하면 되겠구나..! 하는 아이디어였다. 물론 코드 또한 그렇게 만들었다. -- 내가 짠 코드 import sys N, M = map(int, sys.stdin.readline().split()) # N * M 크기의 보드 board = [] for _ in range(N): # sys.stdin.readline()은 개행문자를 받기때문에 s.. 2022. 1. 10.
[Python] 입력값이 잘못됐을 때 코드를 다시 실행해보자 기초 파이썬 멘토링을 진행하던 도중 멘티 한분의 질문이 있었다. 그 질문은 "주어진 문제에서 입력값을 input()으로 받아줄 때 원하는 범위의 값을 입력받지 못하는 경우 다시 코드를 실행할 수 있나요?" 였다. 물론 가능하다. 하지만 보통 백준을 풀거나 과제를 진행할 경우 해당 조건에 맞는 값이 입력되기 때문에 가능하다고만 생각해보았지 직접 코드를 짜본적은 없었던 것 같다.  그래서 이번 기회에 한번 구글링도 해보고 코드를 짜보는 시간을 가졌다. - 시간과 분을 받는 코드를 만들어보자! 시간은 0  1. 파이썬의 내장 클래스인 Exception을 상속받아 사용자 지정 오류 class를 만들어준다.2. 만든 사용자 지정 오류를 호출하는 함수를 만들어줍니다.# 사용자 임의로 error만들기class my_.. 2022. 1. 9.
[백준 2805번] 나무 자르기 - 이분탐색 예제 # 오늘은 오후 약속이 있어 한문제만 딱 풀고 나가려했는데.. 처음 짠 코드는 항상 정답이 아니다.. -- 처음 짠 코드 # 필요한 나무 m미터 # 절단기에 지정할 높이 H 의 최댓값을 구하기 N, M = map(int, input().split()) tree = list(map(int, input().split())) height = 0 # 절단기에 설정할 높이 while True: tree_check = 0 # 반복때마다 가져갈 수 있는 나무의 양 체크 for i in range(N): if tree[i]-height>0: tree_check += (tree[i]-height) else: continue # 설정한 높이보다 주어진 나무가 낮다면 0 if tree_check < M: break else.. 2022. 1. 8.
[백준 2869번] 달팽이는 올라가고 싶다 제목만 보고 달팽이 배열 문제일 거라 생각했다. 생각해보니 달팽이 배열에선 위로 올라갈 수가 없지 -- 처음 짠 코드 a, b, v = map(int, input().split()) # 무조건 출력은 낮에 올라갔을 때 반복문이 중단되어 이루어질것 day = 1 # 걸리는 날짜 ( 일단 올라갔다고 생각 ) up = a # 올라간 높이 ( 올라갔다해 ) while up < v: day += 1 up -= b up += a print(day) 생각이 가는대로 코드를 짜보았다. 물론 3번째 예시를 넣는 순간 아차 싶었다. 10억까지 100씩더하고 99씩 빼고 있었다 ㅋㅋㅋ 1씩 더해 10억까지 가는데는 1분정도 더 걸리는군.. 참 이렇게 코드를 한번 짜고 다시 생각하려면 머리가 더 아픈 것 같다. 아무래도 하루.. 2022. 1. 6.
[22.01.06] KMP 알고리즘 # KMP 알고리즘 문자열을 찾는 데 사용되는 알고리즘ex) 웹 브라우저 상에서 현재 페이지에 포함되어 있는 특정 단어를 찾고 싶을 때 ctrl + f 를 사용 - 일반적으로 주어진 글에서 원하는 문자열을 찾고 싶다면 어떤식으로 설계해야 할까? ABC라는 단어를 찾고싶다면 우선 A로 시작하는 곳을 찾고 그 뒤가 B인지 판단, B가 맞다면 뒤가 C인지를 판단하면 되지 않을까?이렇게 한다면 앞에서부터 무작정 3글자씩 비교해보는 것보다는 효율적일 것 같다. 하지만 찾고자하는 문자가 길수록, 찾고자하는 문자열의 뒤쪽에서 오류가 날 수록 원하는 단어를 찾는데는 오랜 시간이 걸릴 것이다.: 이때의 시간 복잡도는 원본 문자열의 길이가  N, 탐색 문자열의 길이가 M일때 O(NM)으로 나타난다. -> 시간 복잡도를 O.. 2022. 1. 6.
[백준 1966번] 프린터 큐 - 큰 수부터 출력하여라 -- 처음 짠 코드 import sys T = int(sys.stdin.readline()) # 테스트케이스의 수 for _ in range(T): n, m = map(int, sys.stdin.readline().split()) # 문서의 개수, 알고싶은 문서의 현재 위치 important = list(map(int, sys.stdin.readline().strip().split())) answer_list = [] while len(answer_list) 인덱스가 -2일때 n-2로 바꾸는게 잘못되어 m의 값이 잘못되게된다. => n-2를 len(important) -1로 수정 , 하지만 아직 오류 1은 해결되지 않음 -> 프린트를 해 answer_list를 갈때와 그냥 순서를 뒤로 보낼때 구하려는 인.. 2022. 1. 5.