Algorithm
[프로그래머스] 👨🏫 가장 큰 정사각형 / Python
[프로그래머스] 👨🏫 가장 큰 정사각형 / Python
2019.02.15👨🏫 가장 큰 정사각형 문제 풀어보기 😃 나의 코드 def solution(board): width = len(board[0]) height = len(board) for x in range(1,height): for y in range(1,width): if board[x][y] == 1: board[x][y] = min(board[x-1][y-1], min(board[x-1][y], board[x][y-1])) + 1 return max([item for row in board for item in row])**2 이 문제를 완전 탐색(Brute-force)으로 푼다고 생각해봅시다. board의 모든 인덱스를 확인해야하고, 정사각형이 가장 작은 1부터 최대 크기의 정사각형까지 확인하게 된다면 시간 ..
[프로그래머스] 👩🏫 행렬의 곱셈 / Python
[프로그래머스] 👩🏫 행렬의 곱셈 / Python
2019.02.15👩🏫 행렬의 곱셈 문제 풀어보기 😃 나의 코드 def solution(arr1, arr2): answer = [] for idx1 in range(len(arr1)): row = [] for idx2 in range(len(arr2[0])): tmp = 0 for idx3 in range(len(arr1[0])): tmp += arr1[idx1][idx3] * arr2[idx3][idx2] row.append(tmp) answer.append(row) return answer 제한 조건에서 곱할 수 있는 배열만 주어진다고 했으니, 두 배열을 A X B, B X C로 해보겠습니다. 그리고 두 행렬의 곱으로 나온 배열의 크기는 A X C가 될 것입니다. 결과 배열의 왼쪽 위부터 오른쪽 아래까지 만들어 나가..
[프로그래머스] ☎ 전화번호 목록 / Python
[프로그래머스] ☎ 전화번호 목록 / Python
2019.02.14☎ 전화번호 목록 문제 풀어보기 😃 나의 코드 def solution(phone_book): phone_book.sort() for prefix_idx, prefix_phone in enumerate(phone_book): for target_phone in phone_book[prefix_idx+1:]: if prefix_phone == target_phone[:len(prefix_phone)]: return False return True 우선 일반적인 풀이입니다. 먼저 해야할 것은 phone_book에 사전 작업으로 사전형으로 정렬해줍니다. 이렇게 정렬하게 되면 절대로 특정 인덱스 앞은 특정 인덱스의 prefix가 될 일이 없기 때문에 시행을 조금이나마 줄여줍니다. 같은 O(n^2)의 시간 복잡도이..
[프로그래머스] 👷♀️ 쇠막대기 / Python
[프로그래머스] 👷♀️ 쇠막대기 / Python
2019.02.14👷♀️ 쇠막대기 문제 풀어보기 😃 나의 코드 def solution(arrangement): answer = 0 arrangement = arrangement.replace("()","L") stack = [] for idx, c in enumerate(arrangement): if c == '(': stack.append('(') answer += 1 elif c == ')': stack.pop() else: answer += len(stack) return answer 스택/큐 알고리즘 카테고리에 속한 문제입니다. 이 문제는 스택을 이용해 풀어야합니다. 우선 레이저에 해당하는 ()를 (과 )이 아닌 다른 문자 하나로 바꾸줍니다 여기서는 Lazer에 해당하는 L로 바꿔주었습니다. stack라는 lis..
[프로그래머스] 🧱 프렌즈 4 블록 - [1차] 2018 카카오 블라인드 채용 / Python
[프로그래머스] 🧱 프렌즈 4 블록 - [1차] 2018 카카오 블라인드 채용 / Python
2019.02.14🧱 프렌즈 4 블록 문제 풀어보기 😃 나의 코드 dx = [0, 1, 0, 1] dy = [0, 0, 1, 1] def safe(width, height, c_idx, r_idx): for x, y in zip(dx,dy): if width-1 < x+c_idx or x+c_idx < 0 or height-1 < y+r_idx or y+r_idx < 0: return False return True def del_check(board, c_idx, r_idx): square_set = set() for x, y in zip(dx,dy): square_set.add(board[y+r_idx][x+c_idx]) if len(square_set) == 1 and square_set != {" "}: retur..
[프로그래머스] 👩💼 뉴스 클러스터링 - [1차] 2018 카카오 블라인드 채용 / Python / KAKAO BLIND RECRUITMENT
[프로그래머스] 👩💼 뉴스 클러스터링 - [1차] 2018 카카오 블라인드 채용 / Python / KAKAO BLIND RECRUITMENT
2019.02.14KAKAO BLIND RECRUITMENT 👩💼 뉴스 클러스터링 문제 풀어보기 😃 나의 코드 import re from collections import Counter as mset p = re.compile("[a-z]{2}") def multiSet(str): lst = [] for idx in range(len(str)-1): if p.match(str[idx:idx+2]): lst.append(str[idx:idx+2]) return lst def solution(str1, str2): lst1 = multiSet(str1.lower()) lst2 = multiSet(str2.lower()) len_lst1 = len(lst1) len_lst2 = len(lst2) if len_lst1 == 0..
[프로그래머스] 👨💻 캐시 - [1차] 2018 카카오 블라인드 채용 / Python
[프로그래머스] 👨💻 캐시 - [1차] 2018 카카오 블라인드 채용 / Python
2019.02.13👨💻 캐시(cache) 문제 풀어보기 😃 나의 코드 def solution(cacheSize, cities): time = 0 cache = [] cities = [city.lower() for city in cities] if cacheSize != 0: for city in cities: if city in cache: cache.pop(cache.index(city)) cache.append(city) time += 1 else: if len(cache) < cacheSize: cache.append(city) time += 5 else: cache.pop(0) cache.append(city) time += 5 else: time += len(cities) * 5 return time 우선 이 ..
[프로그래머스] 🎯 다트 게임 - [1차] 2018 카카오 블라인드 채용 / Python
[프로그래머스] 🎯 다트 게임 - [1차] 2018 카카오 블라인드 채용 / Python
2019.02.12🎯 다트 게임 문제 풀어보기 😃 나의 코드 import re def solution(dartResult): answer = 0 p = re.compile("(\d+)([a-zA-Z])(\*|#)?") scores = p.findall(dartResult) result = [] for idx, score in enumerate(scores): point = score[0] bonus = score[1] option = score[2] if bonus == 'S': bonus = 1 elif bonus == 'D': bonus = 2 elif bonus == 'T': bonus = 3 if option == '*': if idx == 0: result.append(int(point)**bonus*2) els..
[프로그래머스] 🗺 비밀지도 - [1차] 2018 카카오 블라인드 채용 / Python
[프로그래머스] 🗺 비밀지도 - [1차] 2018 카카오 블라인드 채용 / Python
2019.02.12🗺 비밀지도 문제 풀어보기 😃 나의 코드 def solution(n, arr1, arr2): answer = [] for decimal1, decimal2 in zip(arr1, arr2): binary12 = str(bin(decimal1 | decimal2))[2:] binary12 = '0' * (n - len(binary12)) + binary12 binary12 = binary12.replace('1', '#') binary12 = binary12.replace('0', ' ') answer.append(binary12) return answer 비트연산(Bitwise Operation)을 이용하면 쉽게 풀 수 있는 문제입니다. 문제 중간에 둘 중 하나가라는 말이 힌트가 될 수 있겠네요. 풀이 ..
🐥 2018 카카오 블라인드 채용 알고리즘 테스트 3차 Python 풀이 모음 / KAKAO BLIND RECRUITMENT
🐥 2018 카카오 블라인드 채용 알고리즘 테스트 3차 Python 풀이 모음 / KAKAO BLIND RECRUITMENT
2019.02.092018 카카오 블라인드 채용 알고리즘 테스트 3차 Python 풀이 / KAKAO BLIND RECRUITMENT 🙋♂️ 목적 Python의 경우 C++에 비해 참고할만한 풀이가 대체로 적다고 생각했습니다. 문제를 푸시다가 공식 문제 해설을 봐도 정 모르겠는 경우 힌트 정도로 이용하시면 되겠습니다. 문제 풀이 → 공식 문제 해설 참조 → 다른 코드 참조 순서로 보시는 걸 추천드립니다. ✨ 카카오에서 제공하는 "공식 문제 해설"과 함께 읽으면 좋습니다. 1. N진수 게임 문제 풀기 / 풀이 보기 2. 💾 압축 문제 풀기 / 풀이 보기 3. 📁 파일명 정렬 문제 풀기 / 풀이 보기 4. 🤳 방금 그 곡 문제 풀기 / 풀이 보기 5. 자동완성 문제 풀기 / 풀이 보기 + ✍️ 필기 시험 문제 풀기 / 풀이..
🐥 2018 카카오 블라인드 채용 알고리즘 테스트 1차 Python 풀이 모음 / KAKAO BLIND RECRUITMENT
🐥 2018 카카오 블라인드 채용 알고리즘 테스트 1차 Python 풀이 모음 / KAKAO BLIND RECRUITMENT
2019.02.092018 카카오 블라인드 채용 테스트 1차 Python 풀이 / KAKAO BLIND RECRUITMENT 🙋♂️ 목적 Python의 경우 C++에 비해 참고할만한 풀이가 대체로 적다고 생각했습니다. 문제를 푸시다가 공식 문제 해설을 봐도 정 모르겠는 경우 힌트 정도로 이용하시면 되겠습니다. 문제 풀이 → 공식 문제 해설 참조 → 다른 코드 참조 순서로 보시는 걸 추천드립니다. ✨ 카카오에서 제공하는 "공식 문제 해설"과 함께 읽으면 좋습니다. 1. 🗺 비밀 지도 / 81.78% 문제 풀기 / 풀이 보기 2. 🕹 다트 게임 / 73.47% 문제 풀기 / 풀이 보기 3. 👨💻 캐시 / 45.26% 문제 풀기 / 풀이 보기 4. 🚍 셔틀버스 / 26.79% 문제 풀기 / 풀이 보기 5. 👩💼 뉴스 클러..
🐥 2019 카카오 블라인드 채용 코딩 테스트 Python 풀이 모음 / KAKAO BLIND RECRUITMENT
🐥 2019 카카오 블라인드 채용 코딩 테스트 Python 풀이 모음 / KAKAO BLIND RECRUITMENT
2019.02.092019 카카오 블라인드 채용 / KAKAO BLIND RECRUITMENT 1차 Python 풀이 🙋♂️ 목적 Python의 경우 C++에 비해 참고할만한 풀이가 대체로 적다고 생각했습니다. 문제를 푸시다가 공식 문제 해설을 봐도 정 모르겠는 경우 힌트 정도로 이용하시면 되겠습니다. 문제 풀이 → 공식 문제 해설 참조 → 다른 코드 참조 순서로 보시는 걸 추천드립니다. ✨ 카카오에서 제공하는 "공식 문제 해설"과 함께 읽으면 좋습니다. 1. 🙋♂️ 오픈채팅방 정답률: 59.91% 문제 풀기 / 풀이 보기 2. 😔 실패율 정답률: 55.57% 문제 풀기 / 풀이 보기 3. 🔑 후보키 정답률: 16.09% 문제 풀기 / 풀이 보기 4. 🐰 무지의 먹방 라이브 정답률: 정확성 42.08% / 효율성 5...