본문 바로가기

Tech

(580)
[이코테] 다이나믹 프로그래밍 - 퇴사 해당 포스팅의 문제의 출처는 나동빈님의 이것이 취업을 위한 코딩 테스트 교재를 공부하면서 풀이할 때 본인의 사고 과정 흐름과 문제 풀이를 기록하기 위함 입니다. 문제설명 하단의 링크를 참조하자. https://www.acmicpc.net/problem/14501 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net 사고과정 DP는 "뒤 입장에서 생각" 해야한다는 관점으로 문제를 풀어보려 했지만 풀지 못했다. 대체 어떻게 점화식을 세워야 하는지 닿을락말락...하지만 닿지 않았음^^ 풀이를 보니 DP 테이블에는 i일부터 마지막 날(N일)까지 얻을 수 있는 최대 금액을 기록하는 것이었음. i일에 상담을 하는데 걸리는 시간 time이 가변적인데 이를 어떻게 해..
[이코테] 이진 탐색 - 가사 검색 해당 포스팅의 문제의 출처는 나동빈님의 이것이 취업을 위한 코딩 테스트 교재를 공부하면서 풀이할 때 본인의 사고 과정 흐름과 문제 풀이를 기록하기 위함 입니다. 문제설명 하단의 링크를 참조하자. https://programmers.co.kr/learn/courses/30/lessons/60060 코딩테스트 연습 - 가사 검색 programmers.co.kr 사고과정 무엇을 이진탐색하는가?에 대해서, 쿼리로 주어지는 문자열 중 ?로 시작하거나 끝나는 인덱스를 찾는 것인지 했다. 그러나 아니었고 ?의 원소 개수를 이진 탐색으로 세는 것인가 했지만 아니었다.. 풀이를 보니 이진 탐색으로 원소 개수를 세는 함수를 사용하는 것이었음. 하지만 이 때, 어떤 원소 개수를 세는지에 대해 접근법이 잘못되었음. 필자는 쿼..
[ML] Tensorflow로 Pretrained Model Fine Tuning 하기 🔊 해당 포스팅은 권철민님의 CNN Fundamental 완벽 가이드 강의를 듣고 난 후 배운 내용을 정리하고자 하는 목적 하에 작성되는 포스팅입니다. 하단의 포스팅에서 사용되는 실습 코드 및 자료는 필자가 직접 재구성한 자료이며 권철민님의 자료를 그대로 인용하지 않았음을 필히 알려드립니다. 이번 포스팅에서는 Tensorflow를 활용해 Pretrained Model을 로드하고 우리가 갖고 있는 데이터로 Pretrained Model을 추가로 학습시키는 Fine Tuning하는 방법에 대해 알아보자. 1. Fine Tuning 이란? 먼저 Fine Tuning에 대해 간단히 알아보자. Fine Tuning은 미리 수많은 데이터로 학습된 전이 학습 모델을 가져와서 우리 데이터를 추가로 학습시켜서 전이 학습..
[이코테] DFS/BFS - 괄호 변환 해당 포스팅의 문제의 출처는 나동빈님의 이것이 취업을 위한 코딩 테스트 교재를 공부하면서 풀이할 때 본인의 사고 과정 흐름과 문제 풀이를 기록하기 위함 입니다. 문제설명 하단의 링크를 참조하자. https://programmers.co.kr/learn/courses/30/lessons/60058 코딩테스트 연습 - 괄호 변환 카카오에 신입 개발자로 입사한 "콘"은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 programmers.co.kr 사고과정 문제를 이해하는게 너무 어려웠다. 그래서 프로그래머스 질문 사이트에서 보니 나만 그런게 아니라 다른 분들의 질문 답변을 통해서 문제를 이해했다. 그리고 재귀함수를..
[이코테] 구현 - 뱀 해당 포스팅의 문제의 출처는 나동빈님의 이것이 취업을 위한 코딩 테스트 교재를 공부하면서 풀이할 때 본인의 사고 과정 흐름과 문제 풀이를 기록하기 위함 입니다. 문제설명 하단의 링크를 참조하자. https://www.acmicpc.net/problem/3190 3190번: 뱀 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임 www.acmicpc.net 사고과정 그동안 연습했다고 한 방향을 구현하는 문제였다. 어느 정도 거의 구현은 했는데, 병목현상에서 걸려서 풀지 못했음.. 그리고 이동, 방향 회전 두 단계를 어느순서로 먼저 진행할지 코드로 옮기는데 헷갈려하는..
[이코테] 그리디 - 무지의 먹방 라이브 해당 포스팅의 문제의 출처는 나동빈님의 이것이 취업을 위한 코딩 테스트 교재를 공부하면서 풀이할 때 본인의 사고 과정 흐름과 문제 풀이를 기록하기 위함 입니다. 문제설명 하단의 링크를 참조하자. https://programmers.co.kr/learn/courses/30/lessons/42891 코딩테스트 연습 - 무지의 먹방 라이브 programmers.co.kr 사고과정 그리디 방식을 전혀 생각하지 못하고 그냥 순차적으로 음식을 먹는 방향으로만 생각했다. 애써 구현했으나 틀림.. 풀이를 보았는데 하루종일 붙잡고 이해하려고 애썼다.. 핵심은 음식을 먹는 데 가장 적게 드는 비용의 음식부터 먹어치우는데, 이 때 회전판으로 음식이 돌아가기 때문에 한 음식을 다 먹는다고 하면 다 먹는 과정을 거치는 동안 다..
[이코테] 그래프 알고리즘 - 탑승구 해당 포스팅의 문제의 출처는 나동빈님의 이것이 취업을 위한 코딩 테스트 교재를 공부하면서 풀이할 때 본인의 사고 과정 흐름과 문제 풀이를 기록하기 위함 입니다. 문제설명 공항에는 G개의 탑승구가 있으며, 각각의 탑승구는 1번부터 G번까지 번호로 구분된다. 공항에는 P개의 비행기가 차례대로 도착할 예정이며, $i$번째 비행기를 1번부터 $g_i$(1
[이코테] 최단 경로 - 정확한 순위 해당 포스팅의 문제의 출처는 나동빈님의 이것이 취업을 위한 코딩 테스트 교재를 공부하면서 풀이할 때 본인의 사고 과정 흐름과 문제 풀이를 기록하기 위함 입니다. 문제설명 선생님은 시험을 본 학생 N명의 성적을 분실하고, 성적을 비교한 결과의 일부만 가지고 있다. 학생 N명의 성적은 모두 다른데, 다음은 6명의 학생에 대해 6번만 성적을 비교한 결과이다. 1번 성적 B로 된다. 이 때, 순위를 정확히 알 수 있는 학생이 있고 없는 학생이 있다. 학생들의 성적이 비교한 결과가 주어질 때, 성적 순위를 정확히 알 ..
[이코테] 다이나믹프로그래밍 - 정수 삼각형 해당 포스팅의 문제의 출처는 나동빈님의 이것이 취업을 위한 코딩 테스트 교재를 공부하면서 풀이할 때 본인의 사고 과정 흐름과 문제 풀이를 기록하기 위함 입니다. 문제설명 하단의 링크를 참조하자. https://www.acmicpc.net/problem/1932 1932번: 정수 삼각형 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. www.acmicpc.net 사고과정 저번에 푼 금광 문제랑 매우 유사한 유형이었지만 시간 내에 풀지 못했다. 풀이의 아이디어만 보고 다시 돌아가서 풀 수 있었다. 금광 문제 때랑 또 똑같이 풀려고 어리석은 짓을 했다..(실력이 늘지 않고 있는 건가..?흑..) DP 점화식을 구현할 때, '다음 단계의 입..
[이코테] 그리디 - 볼링공 고르기 해당 포스팅의 문제의 출처는 나동빈님의 이것이 취업을 위한 코딩 테스트 교재를 공부하면서 풀이할 때 본인의 사고 과정 흐름과 문제 풀이를 기록하기 위함 입니다. 문제설명 A, B 두 사람이 볼링을 치고 있다. 두 사람은 서로 무게가 다른 볼링공을 고르려고 한다. 볼링공은 총 N개가 있으며 각 볼링공마다 무게가 적혀 있고, 공의 번호는 1번부터 순서대로 부여된다. 또한 같은 무게의 공이 여러개 있을 수 있지만, 서로 다른 것으로 간주한다. 볼링공의 무게는 1부터 M까지의 자연수 형태로 존재한다. 예를 들어, N이 5이고, M이 3이며, 각각의 무게가 차례대로 [1, 3, 2, 3, 2] 일때 각 공의 번호가 차례대로 1번부터 5번까지 부여한다. 이 때 두 사람이 서로 다른 공을 고를 수 있는 경우의 수는 ..
[이코테] 이진 탐색 - 공유기 설치 해당 포스팅의 문제의 출처는 나동빈님의 이것이 취업을 위한 코딩 테스트 교재를 공부하면서 풀이할 때 본인의 사고 과정 흐름과 문제 풀이를 기록하기 위함 입니다. 문제설명 하단의 링크를 참조하자. https://www.acmicpc.net/problem/2110 2110번: 공유기 설치 첫째 줄에 집의 개수 N (2 ≤ N ≤ 200,000)과 공유기의 개수 C (2 ≤ C ≤ N)이 하나 이상의 빈 칸을 사이에 두고 주어진다. 둘째 줄부터 N개의 줄에는 집의 좌표를 나타내는 xi (0 ≤ xi ≤ 1,000,000,000)가 www.acmicpc.net 사고과정 풀이를 보아도 이해가 단 번에 안가는 문제였다. '이진 탐색'하는 대상을 '집 좌표'라고 생각했는데, 풀이를 보니 가장 인접한 두 공유기 사이의..
[ML] Residual Block을 활용한 ResNet(Residual Network) 🔊 해당 포스팅은 권철민님의 CNN Fundamental 완벽 가이드 강의를 듣고 난 후 배운 내용을 정리하고자 하는 목적 하에 작성되는 포스팅입니다. 하단의 포스팅에서 사용되는 실습 코드 및 자료는 필자가 직접 재구성한 자료이며 권철민님의 자료를 그대로 인용하지 않았음을 필히 알려드립니다. 이번 포스팅에서는 Skip Connection 이라는 개념을 최초로 활용해서 Residual Block을 연속적으로 쌓아 매우 깊은 네트워크를 형성했음에도 불구하고 이전 CNN 분류 모델인 GoogleNet 보다 더 높은 성능을 이끈 ResNet에 대해 알아보고자 한다. 1. ResNet은 왜 등장했을까? 원초적인 질문으로 돌아가보자. 저번 포스팅에서 배운 GoogleNet도 성능이 나름 괜찮은 편이였는데, 왜 새로..
[이코테] 정렬 - 카드 정렬하기 해당 포스팅의 문제의 출처는 나동빈님의 이것이 취업을 위한 코딩 테스트 교재를 공부하면서 풀이할 때 본인의 사고 과정 흐름과 문제 풀이를 기록하기 위함 입니다. 문제설명 하단의 링크를 참고하자. https://www.acmicpc.net/problem/1715 1715번: 카드 정렬하기 정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장 www.acmicpc.net 사고과정 왜 이게 정렬 카테고리에 있는지 감이 오지 않았다.. 수열의 규칙을 찾는 것처럼 여러번 시도를 해보았지만 못 찾았다. 접두 합을 이용하는 건가 했지만 틀렸다. 풀이를 보니 핵심 포인..
[이코테] DFS/BFS - 경쟁적 전염 해당 포스팅의 문제의 출처는 나동빈님의 이것이 취업을 위한 코딩 테스트 교재를 공부하면서 풀이할 때 본인의 사고 과정 흐름과 문제 풀이를 기록하기 위함 입니다. 문제설명 하단의 링크를 참조하자. https://www.acmicpc.net/problem/18405 18405번: 경쟁적 전염 첫째 줄에 자연수 N, K가 공백을 기준으로 구분되어 주어진다. (1 ≤ N ≤ 200, 1 ≤ K ≤ 1,000) 둘째 줄부터 N개의 줄에 걸쳐서 시험관의 정보가 주어진다. 각 행은 N개의 원소로 구성되며, 해당 위치 www.acmicpc.net 사고과정 BFS를 생각했는데, 너무 복잡하게 생각한 듯하다.. 한 초에 증식된 후, 꼭 한 좌표에서 탐색을 시작해야되라고 생각해서 여기서 사고의 흐름이 완전 망가졌다.. 한 ..
[이코테] 구현 - 자물쇠와 열쇠 해당 포스팅의 문제의 출처는 나동빈님의 이것이 취업을 위한 코딩 테스트 교재를 공부하면서 풀이할 때 본인의 사고 과정 흐름과 문제 풀이를 기록하기 위함 입니다. 문제설명 하단의 프로그래머스 링크를 참조하자. https://programmers.co.kr/learn/courses/30/lessons/60059 코딩테스트 연습 - 자물쇠와 열쇠 [[0, 0, 0], [1, 0, 0], [0, 1, 1]] [[1, 1, 1], [1, 1, 0], [1, 0, 1]] true programmers.co.kr 사고과정 매우 어려웠..다.. 시간에 구애받지 않고 최대한 아이디어를 생각해보려 했다. 문제를 파악하고 입출력 예시를 이해하는 데만 10분이걸렸다. 주어진 데이터 범위도 적어서 완전 탐색일 것을 예상했다. ..
[이코테] 그리디 - 만들 수 없는 금액 해당 포스팅의 문제의 출처는 나동빈님의 이것이 취업을 위한 코딩 테스트 교재를 공부하면서 풀이할 때 본인의 사고 과정 흐름과 문제 풀이를 기록하기 위함 입니다. 문제설명 동네 편의점의 주인인 동빈이는 N개의 동전을 갖고 있다. 이 때 N개의 동전을 이용해 만들 수 없는 양의 정수 금액 중 최솟값을 구하는 프로그램을 작성해라. 입력조건 첫째 줄에는 동전의 개수를 나타내는 양의 정수 N이 주어진다. (1 = c: target += c else: break print(target)
[ML] GoogleNet(InceptionNet) CNN 모델 🔊 해당 포스팅은 권철민님의 CNN Fundamental 완벽 가이드 강의를 듣고 난 후 배운 내용을 정리하고자 하는 목적 하에 작성되는 포스팅입니다. 하단의 포스팅에서 사용되는 실습 코드 및 자료는 필자가 직접 재구성한 자료이며 권철민님의 자료를 그대로 인용하지 않았음을 필히 알려드립니다. 이번 포스팅에서는 Pretrained 모델로 자주 사용되기도 하며 1 by 1 컨볼루션을 최초로 도입한 GoogleNet 모델에 대해 알아보려고 한다. GoogleNet은 Inception Network라고도 부르며 예전에 코세라 딥러닝 강의를 들으면서 배웠던 적이 있다. 강의를 들은지 시간이 좀 되었기도 하고 다시 회고하고 복습하고자 GoogleNet에 대해 작성하려 한다. GoogleNet은 이름에서도 알다시피 ..
[이코테] 암호 만들기 해당 포스팅의 문제의 출처는 나동빈님의 이것이 취업을 위한 코딩 테스트 교재를 공부하면서 풀이할 때 본인의 사고 과정 흐름과 문제 풀이를 기록하기 위함 입니다. 문제설명 하단의 백준 링크를 참조하자. https://www.acmicpc.net/problem/1759 1759번: 암호 만들기 첫째 줄에 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 다음 줄에는 C개의 문자들이 공백으로 구분되어 주어진다. 주어지는 문자들은 알파벳 소문자이며, 중복되는 것은 없다. www.acmicpc.net 사고과정 너무 어렵게 생각했다. 조합을 이용하되 투 포인터를 활용한 합집합 정렬을 이용해야 하는 것 같다고 생각했다. 처음에 조합을 사용하고 모음 처리 로직을 단순히 추가할까? 했는데 시간 복잡도 문제를 ..
[이코테] 소수 구하기 해당 포스팅의 문제의 출처는 나동빈님의 이것이 취업을 위한 코딩 테스트 교재를 공부하면서 풀이할 때 본인의 사고 과정 흐름과 문제 풀이를 기록하기 위함 입니다. 문제설명 하단의 백준 문제 링크 참조 https://www.acmicpc.net/problem/1929 1929번: 소수 구하기 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. www.acmicpc.net 사고과정 주어진 범위 내의 다수의 소수를 출력하는 문제다. 바로 에라토스테네스의 체 알고리즘을 활용 m = 1로 주어질 수도 있으므로, 애초에 숫자 1은 소수가 아님을 처리 풀이 import math n, m = map(int, in..
[Python] 알아두면 좋을 기타 알고리즘 🔊 이번 포스팅에는 최근에 Python으로 알고리즘을 공부하기 시작하면서 알게 된 여러 알고리즘의 원리와 Python으로 구현하는 방법에 대해 소개해보려 한다. 필자는 최근 알고리즘 공부를 '나동빈'님의 '이것이 취업을 위한 코딩 테스트다 with 파이썬'이라는 책과 백준 온라인 저지 사이트로 하고 있다. 이 중 '나동빈'님이 저자이신 책에서 가르쳐주는 내용을 기반으로 배운 내용을 정리해보려 한다. 이번 포스팅에서는 책 속 이론의 마지막 부분인 평소에 알아두면 코딩 테스트나 기타 상황에 잘 사용할 수 있는 기타 알고리즘들에 대해 소개하려고 한다. 소개할 알고리즘 종류들은 소수의 판별, 에라토스테네스의 체, 투 포인터, 구간 합 계산, 순열과 조합으로 총 5가지 알고리즘들에 대해 소개한다. 1. 소수의 ..