난이도: Lv.3유형: 부르트 포스, 구현해결 여부: 틀림내가 생각했던 아이디어/큰 가닥쉬운 문제라고 생각했다. 투 포인터, 슬라이딩 윈도우로 접근했다. 그냥 그 회의실 예약이나 감시카메라 문제처럼 end 기준으로 잡고 보면 될거 같았다,근데 일단 문제를 잘못읽었다. start,end 값 해석도 잘못되었고, 순간이 아닌 범위 1초를 찾는거였다.계속 부동소수점 에러나길래 빡쳐서 다 정수로 바꿔버렸다.그런데도 테스트케이스 에러가 났다. 오답 이유이건 두 선분이 겹치는 정적인 지점이 아닌 1초라는 유동적 구간을 활용해야 한다. 그래서 그냥 부르트 포스로 for문 2개 돌리면서 이전 값 확인하는 거였다. 투포인터로는 1초라는 유동적 구간이 있어서 놓칠 수 있다. 해답낚시 문제였다. 이런!#기억할 문법 def c..
Algorithm/Simulation
난이도: Lv.3유형: 시뮬레이션, 그리디해결 여부: 정답내가 생각했던 아이디어/큰 가닥처음에는 m*n으로 길이비교해서 줄이랑 수용인원이랑 해야하나 싶었다. 하지만 버스 배차간격과 줄 시간떄문에 얻어낼 수 있는 정보가 많이 없었다.고민했는데 그냥 마지막에 누구누구 타는지 줄만 알면 되는거였다.하지만 그러기 위해서는 필연적으로 그 전것까지 시뮬레이션을 돌려야만 알 수 있었다. 마지막 버스시간만 따로 빼서 계산하고, 어차피 못타는 지각쟁이들 미리 처리해버렸다. 그러고 줄 여유 있어서 그냥 가도 되면 마지막 bus_time return 하는 식으로 했다.오답이유변수이름 통일이랑, 정수->문자열 변환 과정에서 한자릿수의 경우 앞에 0 안붙여서 잠깐 틀렸었다. 정답코드처음부터 다 시간도 분으로 치환해서 계산하면 ..
난이도: Lv.3유형: brute force, 구현해결 여부: 못품 내가 생각했던 아이디어/큰 가닥일단 돌리기, 밀기를 구현해놓고 그다음에 이걸 잘 조합하면서 brute force 하면 되지 않을까 하긴 했는데 시간도 다되었고, 정말 이방향성이 맞나 싶어서 그만두었다. 오답 이유일단 밀기는 별도 로직이 아니었다.회전함수는 다음과 같이 쉽게 만들 수 있다.90도 회전 공식: result[j][n - 1 - i] = matrix[i][j]def rotate_90(matrix): n = len(matrix) m = len(matrix[0]) result = [[0] * n for _ in range(m)] for i in range(n): for j in range(m): ..
난이도: Lv.2유형: 시뮬레이션해결 여부:오답아이디어틱텍토가 정상적인 상황인지 2차원 배열 처리하는 문제다오답 이유 혹은 알게 된것쌩구현문제인데 그냥 Typo 가 좀 있어서 걸렸다.불가능 case가 O와 X count 가 다른경우와 둘다 빙고 나오는 경우 이렇게만 잡고 생각했는데, 복합적으로 O가 이겼는지 X가 이겼는지에 따른 개수 case도 있었다. 알고리즘적으로 어려운 건 많이 없었는데 저 예외 못잡아서 틀렸다. 확실히 이런 구현 문제는 항상 함정이 있으니 직접 해보면서 해야겠다2차원 배열 안에서 현기증... 자꾸 실수가 있다def bingo(s,board): for i in range(0,3): if board[i].count(s) == 3: return 1 ..
난이도: Lv.0유형: 시뮬레이션, bruteforce해결 여부: 테스트케이스 오답 후 해결아이디어2차원 배열에서 대각선 포함 근처에 폭탄이 없는 칸의 개수를 구하는 문제다. 그냥 쌩 순회여서 시간줄이는법있나 했는데 그냥 시뮬레이션 부르트포스 문제였다오답 이유 혹은 알게 된것이차원 배열 처리애서 애를 먹었다. 어떻게해야 효율적일지2차원 리스트 슬라이싱을 잘못해서 삽질했다. list[start:end][start:end] 이러면 딱 나오는줄 알았는데 이상한 값이 나왔다. 그래서 이런 경우 그냥 numpy 써서 np.array()로 변환해준 다음에 array[startY:endY, startX:endX] 이런식으로 하는게 나을 것이다. 3. 만약 numpy 쓰기 싫으면 directions로 8방향 리스트에 ..
난이도: Lv.1유형: 시뮬레이션해결 여부: 통과아이디어- 2차원 배열 구현해서 드래그의 시작점과 끝점을 최소 최대로 잡는 것이었다.오답 이유 혹은 알게 된것1. 격자점이 칸이아니라 줄 기준이어서 마지막에 1더해주어야 했다.2. 처음에는 max, min 구하는데 특정 값 기준으로 정하고 그러는줄알았는데 아니었다. 그냥 가장 최소, 가장 최대 2차원 배열 각각 구해주면 되는것이었다. 그래서 2차원 배열 막 뒤집는 함수 찾으려고 했는데 풀다보니 필요 없다는 것을 알아냈다. 3. find와 rfind를 잘 써먹었다. 4. sort 안에 sort(key=lambda x: x[1]) 이렇게 key와 lambda 문법으로 효율적으로 정리하는 법을 알게되었다 def solution(wallpaper): answ..
