Algorithm

난이도: 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 ..
·Algorithm/String
난이도: Lv.2유형: 계수정렬, 문자열, 해시해결 여부: 바로 정답아이디어: 스택을 이용한 문제이지만, 괄호에서 중소대괄호 구분없이 하나의 괄호만 들어온다는 점을 이용, 지금까진 쌓인 여는괄호 개수만 기록해 효율적으로 풀이def solution(s): counter = 0 for i in s: if i=='(': counter+=1 else: counter-=1 if counter
·Algorithm/Math
난이도: Lv.2유형: 부분 합, 투 포인터해결 여부: 시간초과 오답아이디어배열에서 연속된 값의 합으로 주어진 값을 만드는 경우를 출력하는 문제다.투포인터와 부분합 문제다.오답 이유 혹은 알게 된것보자마자 startpos와 endpos를 움직이는 투포인터 문제라는 건 잘 캐치했다. 그런데 2가지를 놓쳤다우선 합을 찾았을때도 탐색을 이어나가야 하는데 이때 startpos와 endpos 이동을 처리해주지 않아 무한루프에 걸렸다그리고, 투포인터만 쓰고 부분합을 안써서 시간초과에 걸렸다. 투포인터와 부분합은 같이가야 한다.def solution(sequence, k): answer = [] length = len(sequence) startpos, endpos =0,0 result = se..
·Algorithm/Math
난이도: Lv.1유형: 수학해결 여부: 1회 오답후 바로 정답아이디어주어진 수의 약수의 합을 구하는 문제다오답 이유 혹은 알게 된것매우 쉬운 문제 lv.0 이어도 될듯?근데 제곱수 edge 케이스 한번 빼먹어서 틀렸었다. 프로그래머스가 나를 많이 무시하고 있다. 이런걸 추천해주고.import mathdef solution(n): answer = 0 m=int(math.sqrt(n)) for i in range(1,m+1): if n%i == 0: answer+=i if i != n/i: answer+=n/i return answer
난이도: Lv.0유형: 시뮬레이션, bruteforce해결 여부: 테스트케이스 오답 후 해결아이디어2차원 배열에서 대각선 포함 근처에 폭탄이 없는 칸의 개수를 구하는 문제다. 그냥 쌩 순회여서 시간줄이는법있나 했는데 그냥 시뮬레이션 부르트포스 문제였다오답 이유 혹은 알게 된것이차원 배열 처리애서 애를 먹었다. 어떻게해야 효율적일지2차원 리스트 슬라이싱을 잘못해서 삽질했다. list[start:end][start:end] 이러면 딱 나오는줄 알았는데 이상한 값이 나왔다. 그래서 이런 경우 그냥 numpy 써서 np.array()로 변환해준 다음에 array[startY:endY, startX:endX] 이런식으로 하는게 나을 것이다. 3. 만약 numpy 쓰기 싫으면 directions로 8방향 리스트에 ..
난이도: Lv.1유형: 스택해결 여부: 오답아이디어숫자를 문자열로 접근하며, 각 자리의 숫자를 세는 계수적 정렬 사용아이디어 자체는 정답오답 이유 및 알게 된것시간초과문자열의 반복 추가에 반복문 사용 -> * 문법으로 바꾸었지만 여전히 시간초과문자열에서 특정 문자의 개수 셀 때 for문으로 1회 순회하여 사용 -> count() 함수 사용이 결정적, count() 가 for문 1회독보다 훨씬 빠름엄청긴 문자열, 숫자열의 형변환은 그만큼 오래걸림. 그래서 모두 0인것을 검출해야 할때 len()=count() 문법 사용 필요했음.즉, 파이썬은 내장함수가 많은대신 이를 잘 이용해야만 한다. 시간차이가 엄청 크다.def solution(X, Y): answer = '' for i in range(9,..
·Algorithm/Math
난이도: Lv.1유형: 수학해결 여부: 정답아이디어배열에서 주어진 숫자 3개의 합으로 나오는 소수의 개수를 구하는 문제이다.조합 계산 후에 정렬하여 가장 큰 값을 기준으로 그 값까지의 소수 리스트를 함수로 만들었다.그래서 소수 개수 리스트가 합 리스트 개수보다 적을 것이라는 것을 이용해 반복문을 돌려 해당 값의 count만큼 답에 추가하게 했다. 오답 이유 혹은 알게 된것itertools에 combinations 사용이 계산을 편리하게 해주었다. 파이썬에 별도의 소수 관련 모듈은 없지만 sqrt를 사용해서 풀었다. from itertools import combinations import mathdef solution(nums): comb = list(combinations(nums,3)) s..
난이도: 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..
걍판자
'Algorithm' 카테고리의 글 목록 (4 Page)