😤 헤맸던 과정 같은 범위가 반복되고, 같은 숫자인지 아닌지 확인해야 하는 과정이 반복되기에 재귀인 것을 빠르게 파악했으나, 1시간 정도 헤맸는데 그 이유는 1. 필요없는 끝범위까지 잡았다. (시작범위에서 그냥 범위만큼 더했으면 되는데) 2. 행마다 이동하는 것이 x이고 열마다 이동하는 것이 y임을 아는데도 범위를 잡는 데에 헷갈렸다 (이건 항상 헷갈리는 것 같다) 틀린 코드 def cut_paper(arr,start_x,end_x,start_y,end_y): global blue,white if start_x+1 >= end_x or start_y+1 >= end_y or end_x - start_x != end_y - start_y: return #범위를 벗어남 flag = True num = arr..
날짜와 시간¶Calendar / GregorianCalendar¶ Calendar 은 추상클래스이기때문에 직접 객체 생성 불가능 => 메서드로 완전히 구현된 클래스의 인스턴스를 얻어야 함Calendar cal = Calendar.getInstance(); 지역에 따라서 다른 캘린더 반환 Date 와 Calendar 간의 변환¶ 용도 : Date 는 Calendar 의 추가 이후 잘 사용되지 않지만, 여전히 Date 를 필요로 하는 메서드들이 존재하기 때문 ```Java Calendar cal = Calendar.getInstance(); Date d = new Date(cal.getTimeInMillis()); // Calendar 를 Date 로 Date d = new Date(); Calendar c..
In [1]: from IPython.core.display import display, HTML display(HTML("")) /var/folders/hr/xt_zt4vn6rjg0vmqgyybsx9c0000gn/T/ipykernel_33558/1939805293.py:1: DeprecationWarning: Importing display from IPython.core.display is deprecated since IPython 7.14, please import from IPython display from IPython.core.display import display, HTML java.lang 패키지와 유용한 클래스¶java.lang 패키지¶ 가장 기본이 되는 클래스들이 포함되어 있음 i..
😤 헤맸던 과정 처음에는 우선순위 자체를 하나의 값으로 봐야 하나? 했는데 우선순위가 무조건 유일할 것이라는 보장이 없기 때문에! 인덱스를 기준으로 보았다. 별로 헤매지 않음! 👼🏻 구현한 코드 from collections import deque testcase = int(input()) #테스트케이스의 수 for _ in range(testcase): n,m = map(int,input().split()) #n은 문서의 개수 / m은 궁금한 문서의 위치 documents = deque(list(map(int,input().split()))) target_idx = m cnt=0 while True: if documents[0]==max(documents): documents.popleft() cnt+..
😤 헤맸던 과정 정말... 정말 너무 애증의 1731번 처음에 딱 코드를 짜고 나서 정답이 뜰 줄 알았는데 계속 50% 를 넘지 못하고 틀렸습니다 가 떴고, 그 이유를 도저히 찾지 못해서 몇일동안 들여다봤다. 그런데도 내 코드에 너무 고여서 그런지 문제점이 보이지 않아서 주변 지인한테 코드를 한번 봐달라고 부탁했다. 가장 처음에 짰던 코드. 일부러 주석처리 해놓고 놔뒀다. # photos = [] # for reco in recommends: # if n==len(photos): # min_reco = photos.index(min(photos, key=lambda x: x[1])) # del photos[min_reco] # else: # if not reco in photos: # print(reco..
😤 헤맸던 과정 우선 - 를 기준으로 숫자를 분리해야겠다는 논리는 쉽게 정립이 되었다. 수들끼리 우선적으로 모두 더해서 값을 크게 만든 뒤 빼게 된다면 최소값이 될 것이기 때문이다. 그래서 처음에는 - 를 기준으로 분류를 한 뒤, + 가 있으면 + 의 위치를 찾아 이를 기준으로 슬라이싱을 하려고 했다. 그러나 이렇게 되는 경우 + 만 있는 1+2+3+4+5 인 경우에 문제가 안풀렸다. 그래서 그 위에 - 가 배열에 없는 경우도 조건에 넣었는데, 이렇게 되는 경우에는 하드코딩에 가깝다는 생각이 들었고, 재귀처럼 - 가 배열에 잇는지 없는지 확인하는 과정을 반복해야 한다는 생각이 들었다. # if not '-' in arr: # arr = arr.split('+') # for i in range(len(ar..
In [1]: from IPython.core.display import display, HTML display(HTML("")) /var/folders/hr/xt_zt4vn6rjg0vmqgyybsx9c0000gn/T/ipykernel_796/1939805293.py:1: DeprecationWarning: Importing display from IPython.core.display is deprecated since IPython 7.14, please import from IPython display from IPython.core.display import display, HTML 예외처리¶ 발생시점에 따른 오류의 분리 컴파일 에러 : 컴파일 시에 발생 런타임 에러 : 실행 시에 발생 논리적 에러..
😤 헷갈렸던 부분 학교 수업에서 그리디 알고리즘을 배울 때, 회의실 배정문제는 회의실을 적게 쓰려고 할 때에는 빨리 시작하는 회의 순으로, 한 회의실에 최대한 여러개의 회의를 배정하기 위해서는 빨리 끝나는 회의 순으로 배정해야 한다는 것은 알고 있었기에 그대로 구현했다가 오류가 떴다. 그 이유는 조건 때문이었다. "단, 회의는 한번 시작하면 중간에 중단될 수 없으며 한 회의가 끝나는 것과 동시에 다음 회의가 시작될 수 있다. 회의의 시작시간과 끝나는 시간이 같을 수도 있다. 이 경우에는 시작하자마자 끝나는 것으로 생각하면 된다." 이 조건! 이 조건에 의해서 끝나는 시간이 같은 경우에는 더 시작 시간이 빠른 순으로 정렬해야 한다는 것을 놓쳐서였다. 1. 왜 빨리 끝나는 순으로 해야 할까? -> 조금만 생..