Posts by Category

알고리즘

[백준] 사이클 게임

왜냐하면 각 정점들이 같은 부모를 가지고 있으면 하나의 집합임을 알 수 있습니다. 만약 두 정점이 이미 같은 집합일때 (같은 부모를 가지고 있을때), 두 정점을 이으면 사이클이 발생합니다.

알고리즘 백준 파이썬

[백준] 7662 이중 우선순위 큐

정수를 담은 자료구조를 다루는 문제입니다. 명령은 I 와 D 두가지로 주어집니다. 이 때 D 명령을 통해 가장 큰 값을 빼거나 가장 작은 값을 뺄 수 도 있습니다. 따라서 항상 적은 시간복잡도로 최대값, 최소값을 제거할 준비가 되있어야 합니다.

알고리즘 백준 파이썬

[백준] 1049 기타줄

끊어진 기타줄의 개수 N과 기타줄 브랜드의 수 M개가 주어집니다. 각 브랜드에서는 기타줄을 6개 묶음과 낱개로 판매하는데, 각각의 가격이 주어집니다. 이때 최소한의 가격으로 적어도 N개 만큼 구매하는 프로그램을 작성하는 문제입니다.

알고리즘 백준 파이썬

[프로그래머스] 주차 요금 계산

요금표와 주차기록이 주어졌을때, 차량번호 작은순부터 내야하는 금액을 출력하는 문제입니다. 카카오 2022 유형은 복잡한 알고리즘은 요구하지 않고 시간내에 구현하기 까다로운 문제들로 구성된듯 합니다. 풀이계획은 금방 세웠지만 작성하는데에는 30분 가량 소모됬습니다.

알고리즘 프로그래머스 파이썬

[프로그래머스] 신고 결과 받기

구현이 까다로운 문제였습니다. 문제조건을 읽어보면 id별 신고당한 횟수를 알아야하는데 한사람이 같은사람을 여러번 신고하는건 신고로 치지 않는다고 합니다. 즉 set 자료형을 이용하면 되겠다는 느낌이 듭니다. 그러나 정답으로 출력해야 하는 건, 각 신고자의 신고가 성공(k번 이상 신...

알고리즘 프로그래머스 파이썬

[프로그래머스] 지형편집

N*N 형태의 2차원 배열로 블럭의 높이가 주어집니다. 각 블럭을 제거하거나 쌓아올려 높이를 평평하게 만들어주는데, 제거와 추가의 가중치가 테스트케이스마다 다릅니다. 몇시간 도전하고 고민하다 결국 다른분의 해설을 듣고 DP형태로 풀이했습니다.

알고리즘 프로그래머스 파이썬

[백준] 24513 좀비 바이러스

전형적인 BFS 탐색 문제입니다. 2차원 좌표에서, 바이러스의 숙주가 될 좌표가 주어지고 (종류 1, 2) 상하좌우로 쭉 퍼져나갑니다. 이미 감염됬거나 치료제가 있을 경우에는 퍼지지 않지만, 다른 종류의 바이러스가 감염중일때 만난다면 종류 3으로 변하는게 조건입니다. 이는 진행거리...

알고리즘 백준 자바스크립트

[LeetCode] Valid Parentheses

같은 타입의 괄호로 닫을 수 있는 것은 물론이고, 순서도 지켜야한다고 명시되있습니다. 가령 ({)} 같은 형태로 주어진다면 false를 리턴해야할겁니다. 그래서 단순히 삽입할 원소와 배열 맨뒤의 원소만 비교하면 되기 때문에 스택 자료를 이용하여 풀이할 수 있는 문제입니다.

알고리즘 LeetCode 자바스크립트

[LeetCode] Add two numbers

언뜻 배열로 착각하고 reverse같은 메서드들을 시도해볼 수 있지만, List의 형태로 주어지기때문에 배열에서 사용하는 메서드들을 사용할 수 없습니다.문제 설명에서, 각 List가 어떻게 구성되는지 알수있는 함수가 주어집니다.

알고리즘 LeetCode 자바스크립트

[프로그래머스] 숫자게임

상대팀인 A를 오름차순으로 정렬하고 아군팀인 B를 최소힙 자료구조에 담습니다. 그 후 A의 각 원소를 탐색하면서, B의 가장 작은 원소와 비교하며 정답을 카운팅합니다. 만약 B의 원소가 더 작다면 pop한 그대로 버리면 됩니다. A는 오름차순으로 정렬되있기때문에, 작아서 버린 B의...

알고리즘 프로그래머스 파이썬

[백준] 15686 치킨 배달

NXN 형태의 지도가 주어지고, 각 좌표는 0, 1(집), 2(치킨집)으로 이루어져있습니다. M개의 치킨집만을 남긴다했을때 총치킨거리(가장 가까운 치킨집에서 집까지의 거리)가 가장 짧은 경우를 구하면 됩니다.

알고리즘 백준 파이썬

벨만포드 알고리즘

음수간선이 포함된 최단거리문제에 효과적이다. 단순히 음수간선이 포함된 경우라면, 다익스트라를 사용해도 괜찮을때도 있다. 그러나 음수 사이클이 발생한다면 벨만포드 알고리즘을 사용해야한다.

알고리즘 이코테

[백준] 18116 로봇 조립

출력을 바꿔서 말하면, 같은 루트를 가지고 있는 부품의 개수를 출력하면 된다. 부품의 최대 개수가 백만으로, 부품에서 count를 하면 시간초과판정을 받기에, 따로 해당 루트가 가지고 있는 부품의 개수를 카운팅하는 배열을 만들어준다.

알고리즘 백준 파이썬

[백준] 14500 테트로미노

블록은 대칭, 회전이 가능하므로 총 19가지 모양이 가능하다. 각 모양에 따른 이동규칙을 배열로 만들어주고, 2차원배열에 전부 대입해본다. 최악의경우 19 * 500 * 500 으로 파이썬으로도 충분히 커버할만한 정도의 시간복잡도를 가지므로 가능하다 판단했다. 다만 모양에 따른 좌...

알고리즘 백준 파이썬

[백준] 1107 리모컨

탐색할 숫자를 문자열로 변환시켜 각 자릿수가 고장난 버튼에 속할경우, 무시하고 넘긴다. 모든 자릿수가 문제 없을 경우, 위에서 구한 공식 누른 자릿수 + abs(목표버튼 - 조합버튼)를 하고, 기존 이동량이랑 비교해서 최소값을 갱신한다.

알고리즘 백준 파이썬

[백준] 2293 동전 1

n행은 ‘각 동전을 가지고 있을 때’, 를 의미한다. 즉 위의 예시라면 1원 동전일때 구할 수 있는 경우의 수, 그 후 1원 2원 동전일때의 경우의 수, 마지막으로 1원, 2원, 5원일때의 경우의 수를 구해주면 된다.

알고리즘 백준 파이썬

[백준] 1987 알파벳

그 외 최적화를 위해, 그래프 문자를 아스키코드로 변환하여 정수로 받았다. 그리고 각 알파벳을 가지고 있는지 체크하는 배열을 만들어, 탐색에 들어갈땐 체크하고 탐색이 끝나면 알파벳을 제거해주었다.

알고리즘 백준 파이썬

[백준] 5430 AC

파이썬의 덱 라이브러리를 이용해서 풀면 되겠다는 생각이 들었다. 처음 접근은 R을 받으면 reverse()로 뒤집고, D라면 popleft()로 제거하자고 생각했었지만, reverse()는 O(N)의 복잡도로 여러번 사용하게 되면 시간초과 판정을 받게 된다. 그래서 다른 방법을 생...

알고리즘 백준 파이썬

[백준] 12796 나의 행렬곱셈 답사기

해당 블로그의 풀이를 보고 허탈하기까지 했다. 오히려 너무 어렵게 생각해서 공책에 끄적이고 틈을 찾는 걸 포기한 것 같다. 스페셜 저지 문제는 정답은 여러개가 될 수 있다. 따라서 다음부터는 간단한 방법으로 나올 수 있는 걸 고민해보는게 좋겠다.

알고리즘 백준 파이썬

[백준] 1493 박스 채우기

나는 큐브의길이가 조건에 맞다면, 한번에 여러개를 집어넣으려고 해서 고생하고 실패했다. 재귀를 줄이려는 선택이였지만, 여러개를 집어넣는다면 남은 공간의 모양이 천차만별이기 때문에 3개의 재귀함수만으로 표현할 수 없었다.

알고리즘 백준 파이썬 C++

[백준] 1074 Z

새로 등분되는 배열들의 좌표를 구해 4개로 재귀한다. 그러다 가장 작은 지수 0에 도달하면, 각 숫자 하나를 가리키는 의미이다. 이때 목표 좌표가 맞다면 출력하고, 아니라면 카운팅하는 로직이다. 그러나 불필요한 재귀호출이 너무 많아 시간초과 판정을 받는다. 이를 줄이기 위해, 탐색...

알고리즘 백준 파이썬

[백준] 1016 제곱 ㄴㄴ 수

이는 에라토스테네스의체를 응용하여 풀 수 있는 문제이다. 기본 에라토스테네스의 체는, 소수의 배수인 숫자들을 배열에서 지워나갔는데, 이를 변형해서 제곱수의 배수인 숫자들을 배열에서 지워내면 된다.

알고리즘 백준 파이썬

[백준] 1976 여행 가자

각 도시간 연결 정보가 주어졌을때, 계획한 도시들을 이동할 수 있는지 없는지 판단하는 문제다. 간선의 가중치가 있어 최적의경로를 구하는 문제도 아니고, 단지 연결되어있는지 확인하는 문제이기 때문에 목표 도시들이 같은 부모노드를 가지고 있는지 확인만 하면된다.

알고리즘 백준 파이썬

[백준] 1654 랜선 자르기

이분탐색을 이용하여 풀이했다. 나눌수 있는 랜선길이의 범위는 (1 ~가진 랜선중 최대길이) 이고 주어지는 최대길이가 1,000,000로 범위가 크니 큰 범위를 빠르게 탐색할수 있는 이분탐색이 적합하다고 판단했다.

알고리즘 백준 파이썬

그리디 & 구현

일반적인 경우, 최적의 해를 구하긴 어렵고 쉽게 최적의 해와 근사한 값을 구할 수 있으나, 알고리즘 테스트의 경우에는 탐욕법을 통해 최적의 해를 구할 수 있도록 설계되어 있다.

알고리즘 이코테

프로젝트

[CSS] BEM 적용

현재 프로젝트에서 스타일링을 할때, 클래스명을 가져와 CSS를 적용하고 있습니다. 그런데 각자 작성한 클래스명이 카멜케이스, 하이픈케이스 등 다양하고 통일이 되있지 않아 유지보수에 어려움을 겪고 있었는데요. 이번기회에 BEM(Block Element Modifier) 방식으로 통일...

프로젝트 ProPro CSS

AWS EC2 Nginx 배포

엘리스 SW 엔지니어 트랙 1기 과정 중 진행했던 1차 프로젝트 Pro-Pro입니다. 진행했을 당시에는 엘리스 측에서 서버를 제공해주었는데 트랙이 끝난 이후에도 프로젝트를 살려두고 싶은 마음이 있어서 팀원들과 함께 다시 배포하게 됬습니다. 마침 제가 AWS 프리티어 기간이 남아, ...

프로젝트 ProPro 배포

개발지식

곤란했던것

블로그

블로그 다크모드 추가

최근 블로그를 꾸미고 있습니다. Jekyll을 잘 알지못해 시행착오를 겪고 있습니다만, 생각나는 기능을 하나하나씩 추가해보려 합니다. 이번에 시도한 건 다크모드 입니다.

블로그 jekyll

경력

우테캠 1차 코딩테스트 합격 후기

지난 일요일에 시험을 치뤘던 우아한테크캠프 1차 코딩테스트에 합격했다고 안내 받았습니다. 2차 과제 테스트, 서류, 면접 등 많은 과정이 남았지만 그동안 중점적으로 공부하던 코딩테스트를 합격해서 기쁜 마음입니다.

경력 우테캠

맨 위로 이동 ↑