Algorithm

· Algorithm
2020 KAKAO BLIND RECRUITMENT https://school.programmers.co.kr/learn/courses/30/lessons/60058 머리말 풀이 시간 50분 컴파일러 수업을 잘 들었다면 수월하게 풀었을 것 같다는 느낌.. 카카오에서 컴파일러 관련 문제도 내는구나 싶었다. 접근 방법 정말 다행인 것은 문제에서 접근 방법을 친절히 설명해준다;; 재귀 함수 쓰는 방법도 다 알려줘서 그거 따라서 하면 쭉 하면 문제없이 풀이할 수 있다. 균형 잡힌 괄호 문자열은 다음과 같이 판별했다. left와 right변수를 선언한다. 문자열을 앞에서부터 탐색하면서 (가 나오면 left를 증가시키고 )가 나오면 right를 증가시키는데 그 갯수가 같아지는 그 시점에서 문자열을 u와 v로 분리하..
· Algorithm
2021 카카오 블라인드 채용https://school.programmers.co.kr/learn/courses/30/lessons/72411머리말풀이 시간 1시간 5분처음 생각한 로직을 쭉 풀어쓰다가 문제에서 이해하지 못한 부분 때문에 코드가 난잡해졌다.접근 방법2번 예제에서 왜 AB는 답에 포함되지 않을까 고민을 많이 했다.하지만 문제에서 가장 많이 함께 주문한 단품 메뉴들을 코스요리 메뉴로 구성 이라는 말을 잘 생각해야 한다.AB도 2번 이상 포함되기는 하지만, AD, CD가 3번씩 포함되므로 이것만 답에 포함시켜야 한다.나는 다음과 같은 로직으로 문제를 풀었다.단품 메뉴 가장 많이 주문한 사람의 개수를 maxLen에 저장한다.그 개수가 course 보다 작다면 확인할 필요가 없..
· Algorithm
2021 카카오 신입 공채 https://programmers.co.kr/learn/courses/30/lessons/72410 🐥 이건 얻어가자 2단계 → 특정 특수문자들을 제거하는 방법 정규식 쓰는 굇수도 있던데 다른 해설 부분을 참고 ㄷㄷ 코드 def solution(new_id): answer = '' # 1단계 answer = new_id.lower() # 2단계 delete = "~!@#$%^&*()=+[{]}:?,/" for i in range(len(delete)): answer = answer.replace(delete[i], "") # 3단계 while answer.replace("..", "") != answer: answer = answer.replace("..", ".") # 4단..
· Algorithm
2022 카카오 신입 공채 https://programmers.co.kr/learn/courses/30/lessons/92334 머리말 처음 엄청 쉽게 작성하고 10점 미만나와서 띠용? 30분 더 투자해서 솔브 dictionary 관련 자주 접하다보면 외워지겠지... 누적 신고 횟수 담으면서 불량 이용자 찾기 → 이메일 보낼 횟수 담기 순으로 처리하였다. 🐥 이건 얻어가자 리스트에서 중복을 중복을 제거하고 싶으면? list(set(리스트)) 해시맵을 구성할 때 key값이 정해져있다면? dict.fromkeys(리스트, 초기값) 코드 def solution(id_list, report, k): answer = [] report = list(set(report)) # set을 이용해 중복으로 신고한 내역 제..
· Algorithm
[2020 카카오 블라인드 채용] https://programmers.co.kr/learn/courses/30/lessons/60057 머리말 딱 구현 문제라고 느껴져 문제를 잘 해석하려고 노력하였다. 하지만, 문자열은 제일 앞부터 정해진 길이만큼 잘라야 합니다. 이 문장을 과소평가하여 첫 제출 때 틀렸다. 그리고 올바르게 짠 것 같은데 자꾸 72점이 나와 다른 사람의 코드를 참고할까 하다가 끝까지 디버깅하여 결국 풀어냈다. 코드 의식의 흐름대로 작성하여 코드가 난잡합니다 🤢 def solution(s): answer = [len(s)] for cut in range(1, len(s) // 2 + 1): # 자를 수 있는 범위 (최소 2개 최대 절반개) substrIdx = 0 cutstr = '' # ..
· Algorithm
https://www.acmicpc.net/problem/2357 머리말 solved 통계를 보니 자료구조 관련 데이터가 별로 없길레 관련 문제 중에 랜덤으로 하나를 골랐다. 문제 자체는 굉장히 평이해보였지만 n, m 범위가 1 이상 10만 이하 라는 점에서 아,, 이거 뭔가 트리 써야할 것 같은데? 라는 생각이 들었다. 어떤 트리 써야할 지 몰라 알고리즘 분류를 보니 세그먼트 트리 문제라고 한다. 세그먼트 트리 백준 블로그에 상세한 설명이 적혀있다. 세그먼트 트리는 어떠한 구간 내의 로직을 처리할 때 굉장히 효율적인 알고리즘이다. 트리의 노드에 범위라는 개념이 들어가고, 저장할 데이터는 로직에 따라 다르겠지만 이 문제에서는 해당 구간의 최솟값, 최댓값을 저장한다. 리프 노드(idx)라면 idx ~ id..
· Algorithm
https://www.acmicpc.net/problem/1162 머리말 오랜만에 9시에 일어나서 백준 문제를 풀어봤다. 일찍 일어난거 맞지..? 어떤 문제를 풀지 고민하다가 최근 수업시간에 다루었던 다익스트라 문제를 골랐다. 1시간 30분 고민해서 풀었다가 6%에서 바로 틀렸다. 허허 아직 부족하다. 나의 접근 방법 다익스트라 문제라는 것만 생각하고 어떻게 문제에 다익스트라를 녹여낼까 고민했던 것 같다. 모든 가중치를 priority queue에 넣고 크기가 큰 순으로 weight를 0으로 집어 넣고 다익스트라를 적용시켰다. 하지만, 조금만 생각해보면 당연히 잘못된 풀이법이다. weight가 큰 것을 포장 도로로 만들 필요가 없기 때문이다. 또한 'k번 이하'라는 조건에 주의를 기울여야 했을 것이다. ..
· Algorithm
문제 링크 1. 종만북 어려워서 힐링차 오랜만에 solved 들어가서 풀어본 문제 아이디어는 떠오르는데 코드 써 내려가는 게 귀찮았다. 조금 더 깔끔하게 풀 수 있을 것 같은데, 현재 코드는 조금 난잡한 느낌이 없지 않아 있다. 2. 입출력을 어떻게 처리할지 많이 고민했다. input[]은 n개의 수로 이루어진 수열이다. op_num[]은 덧셈, 뺄셈, 곱셈, 나눗셈의 개수를 나타낸다. op_num[]의 index 번호를 각각의 연산자로 간주하였다. 즉, 0은 덧셈, 1은 뺄셈 이런 식으로 말이다. opArr[]에 연산자를 숫자로 표현하여 집어넣었다. 예를 들면, op_num[0]=2, op_num[1]=1, op_num[2]=1, op_num[3]=2 이라면 opArr = {0, 0, 1, 2, 3, ..
squareyun
'Algorithm' 카테고리의 글 목록 (2 Page)