프로그래머스 고득점 kit 완주 목표를 세웠다~! 그중, 대망의 첫 번째 알고리즘 해시 알고리즘을 공부해 보았다. 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제: 문제 설명 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조대 : 119 박준영 : 97 674 223 지영석 : 11 9552 4421 전화번호부에 적힌 전화번호를 담은 배열 phone_book 이 solution 함수의 매개변수로 주어질 때, 어떤 번호가..
Algorithm
1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net 처음에는 문제를 이해하고 풀이접근부터 어려웠던 문제다... 항상 이차원 배열로 생각하는 게 아직 어려운 것 같다... 우선 정답 8x8 보드와 입력값으로 주어진 n x m보드의 흑백 위치를 비교하면서 다르면 카운트해줘서 값의 최솟값을 출력하면, 우리가 원하는 가장 적게 다시 칠해야 되는 경우의 수를 얻을 수 있다고 이해했다. 그렇다면 먼저 입력값을 배열로 받아주고, 초기 배열의 보드를 8x8의 크기만큼 잘라서 비교하는 것을 반복해서 그중 가장 작은 값을 ..
2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net 풀이 과정: 정답 : ################# 설탕배달 n = int(input()) #상근이가 배달해야할 Nkg 설탕 무게 noAns = -1 for fiveCount in range(n//5, -1, -1): threeCount = (n - fiveCount*5) // 3 if fiveCount*5 + threeCount*3 == n: print(fiveCount + threeCount) break else: print(noAns)
알고리즘 문제를 풀면서 어떤 방법으로 접근 해야하는지 답답하여 알고리즘 공부법을 찾아 보다가 알고리즘에도 종류가 있고 기법 같은게 있다는 것을 알았다. 무턱대고 푼 과거의 나 자신을 칭찬한다... 복잡도(complexity) 복잡도는 알고리즘의 성능을 보여주는 기준이다. 복잡도에는 시간 복잡도(수행시간 분석) 공간복잡도(메모리 사용량 분석)가 있다. 복잡도가 낮을수록 좋은 알고리즘이다! 알고리즘 성능 평가에서 빅오 표기법(Big-O Notation)을 이용 할 수 있다. 자신이 짠 소스코드의 시간복잡도 정도는 빅오 표기법으로 유추할 수 있어야 한다. 빅오 표기법 : 함수의 가장 큰 항만을 고려한다! aN^3 + bN^2 + c 이와 같은 알고리즘이 있을 경우 여기서 가장 큰 항인 N의 3승 만을 고려한다..