profile
A Student of Computer Science
post-thumbnail

C언어 포인터 (Pointer)

포인터란 자료가 저장되는 기억장치의 기억주소를 가리키는 지시자이다.포인터는 다른 기억장소의 자료를 참조하는데 사용되는 데이터이다.포인터를 쓰는 이유어떠한 변수이든지 Buffer를 할당받아서 사용하게 되는데, 모든 변수의 저장과 참조는 변수가 저장될 or 저장된 주소를

2021년 6월 1일
·
0개의 댓글

[프로그래머스] 괄호 변환 (Python)

주어진 조건을 완벽히 구현할 수 있는지가 문제의 포인트라고 생각한다. 함수안에 같은 함수가 들어있는 재귀적인 구조와 '올바른 문자열'을 판단할 때 Stack을 사용하는 로직을 이해한다면 문제를 구현하는데 어렵지 않을 것이라고 생각한다. ※ TIP 문자열 일치 문제는 문

2021년 5월 23일
·
0개의 댓글

[프로그래머스] 메뉴 리뉴얼 (Python)

문제를 조합으로 푸는 방식으로 접근했다. orders의 원소의 길이가 최대 10이고, course의 원소의 길이 최대도 10이므로 nCk (n과 k는 1~10)조합의 최대 시간 복잡도는 1억 이하이기 때문에 조합으로 풀 수 있다고 판단했다. course리스트 안의 숫자

2021년 5월 23일
·
0개의 댓글

[프로그래머스] 신규 아이디 추천 (Python)

주어진 조건을 완벽히 구현할 수 있는지가 문제의 포인트라고 생각했다. 단순한 구현 문제로 Python의 .lower(), .isalpha(), .isdigit(), ...등의 함수를 사용하여 주어진 조건을 완벽히 구현할 수 있다면 쉽게 문제를 풀 수 있다고 생각한다.

2021년 5월 23일
·
1개의 댓글
post-thumbnail

[알고리즘] 벨만-포드 알고리즘 (Bellman-Ford Algorithm)

벨만-포드 알고리즘(Bellman-Ford Algorithm)이란?

2021년 5월 13일
·
0개의 댓글

[BOJ 11659] 구간 합 구하기 4 (Python)

먼저 주어진 배열의 원소의 누적합을 구하여 배열 S에 저장한다. 이후 배열 S를 이용해 구간 합을 구할 수 있다. 예제를 통해 알아보자.arr = \[5, 4, 3, 2, 1] 에서 누적합을 구해보자.S = \[0, 5, 9, 12, 14, 15]로 누적합 리스트인 S

2021년 5월 12일
·
0개의 댓글

[BOJ 2042] 구간 합 구하기 (Python)

문제의 포인트는 세그먼트 트리(Segment Tree)를 사용하는 것이다. 세그먼트 트리에 잘 모른다면 해당 글을 참고하면 좋을 것이다. 왜 세그먼트 트리를 사용할까? 문제에서 주어진 2가지 연산을 생각해보자. 구간 b, c가 주어질 때, arr\[b] + ... +

2021년 5월 12일
·
0개의 댓글
post-thumbnail

[자료구조] 세그먼트 트리 (Segment Tree)

세그먼트 트리(Segment Tree)란?

2021년 5월 12일
·
0개의 댓글

[BOJ 1786] 찾기 (Python)

복습 요망!!이 문제의 포인트는 KMP 알고리즘을 사용하는 것이다. 문제의 설명 자체가 KMP 알고리즘의 원리이다. 결국 'KMP 알고리즘을 구현해봐!' 라는 문제의 의도를 파악할 수 있다.KMP 알고리즘이란 주어진 문자열에서 특정한 문자열을 빠르게 찾아내는 방법 중

2021년 5월 12일
·
0개의 댓글

[BOJ 14725] 개미굴 (Python)

처음에 주어진 먹이 정보를 오름차순으로 정렬한 후 주어진 먹이 정보의 맨 왼쪽의 원소가 겹치는 것은 출력하지 않는 방식으로 접근하였다. O(N \* K) -> 1,000 \* 15 = 15,000의 시간 복잡도를 가지기 때문에 올바른 방식이라고 생각하였다. 하지만 출력

2021년 5월 7일
·
0개의 댓글
post-thumbnail

[알고리즘] 이분 탐색 / 이진 탐색 (Binary Search)

이진 탐색(이분 탐색) 알고리즘은 정렬되어 있는 리스트에서 탐색 범위를 절반씩 좁혀가며 데이터를 탐색하는 방법이다.이진 탐색은 배열 내부의 데이터가 정렬되어 있어야만 사용할 수 있는 알고리즘이다. 변수 3개(start, end, mid)를 사용하여 탐색한다. 찾으려는

2021년 5월 5일
·
0개의 댓글

[BOJ 9935] 문자열 폭발 (Python)

이 문제의 포인트는 스택과 문자열 인덱스 및 슬라이싱을 활용하는 것이다. 보통 문자열 일치 문제는 문자열의 끝에 집중하는 스택을 활용하여 푼다. (특정 조건을 만족하는 문자열 길이 문제는 표를 만들어서 DP를 , 찾고자 하는 문자열의 접두사와 접미사가 일치한다면 KMP

2021년 5월 5일
·
0개의 댓글

[BOJ 2110] 공유기 설치 (Python)

이 문제의 포인트는 이분 탐색을 활용해야 한다는 것이다. 이분 탐색은 오름차순으로 정렬된 N개의 데이터에서 원하는 값을 찾는(O(logN)) 알고리즘인데, 보통 이분 탐색에서 초기 left와 right값을 배열의 첫 인덱스와 마지막 인덱스로 설정한다. 하지만, 이 문제

2021년 5월 5일
·
0개의 댓글

[BOJ 10815] 숫자 카드 (Python)

처음에 상근이가 가지고 있는 카드 리스트에 사용할 인덱스 포인터 1개, 주어진 카드(체크할 카드)에 사용할 인덱스 포인터 1개로 총 2개의 인덱스 포인터를 사용하는 방식으로 접근하였다. 2개의 카드 리스트를 오름차순 정렬 후에 상근이 카드가 주어진 카드보다 크면 주어진

2021년 5월 2일
·
0개의 댓글

[BOJ 7453] 합이 0인 네 정수 (Python)

처음에 완전탐색으로 A\[a] + B\[b] + C\[c] + D\[d] = 0인 경우를 모두 구하는 방식으로 접근하였다. 시간 복잡도는 O(N^4)으로 당연히 시간 초과가 발생한다.문제의 포인트는 A\[a] + B\[b]의 리스트 1개, C\[c] + D\[d]의 리

2021년 5월 2일
·
0개의 댓글
post-thumbnail

[알고리즘] 정렬 알고리즘 (Sorting Algorithm)

정렬(Sorting)이란 데이터를 특정한 기준에 따라서 순서대로 나열하는 것을 의미한다.일반적으로 문제 상황에 따라서 적절한 정렬 알고리즘이 공식처럼 사용된다. 정렬 알고리즘으로 데이터를 정렬하면 이진 탐색이 가능해진다. (정렬 알고리즘은 이진 탐색의 전처리 과정이기도

2021년 4월 30일
·
0개의 댓글
post-thumbnail

[자료구조] 해시테이블 (HashTable)

해시테이블을 알아보기 전에 먼저 해시(Hash), 해시 함수(Hash Functioni), 해싱(Hashing)에 대해 알아보자.해시(Hash)란 데이터를 다루는 기법 중 하나로, 임의의 값을 고정 길이로 변환하는 것을 의미한다.해시 함수(Hash Function)는

2021년 4월 29일
·
0개의 댓글
post-thumbnail

[자료구조] 트리 (Tree)

사진의 출처 : 링크트리(Tree)는 그래프의 일종으로 정점과 간선을 이용하여 데이터의 배치 형태를 추상화한 자료구조이다.서로 다른 두 노드를 연결하는 길이 하나뿐인 그래프를 트리라고 부른다.힙(Heap)을 구현하는 방법 중 하나가 트리이다.트리 자료구조는 일반적으로

2021년 4월 29일
·
0개의 댓글
post-thumbnail

[자료구조] 트라이 (Trie)

트라이(Trie)는 문자열을 저장하고 효율적으로 탐색하기 위한 트리 형태의 자료구조이다.우리가 검색할 때 볼 수 있는 자동완성 기능, 사전 검색 등 문자열을 탐색하는데 특화되어있는 자료구조라고 한다.래딕스 트리(radix tree) or 접두사 트리(prefix tre

2021년 4월 29일
·
0개의 댓글

[BOJ 11000] 강의실 배정 (Python)

처음 '수업이 끝나는 시간'을 기준으로 오름차순 정렬을 한 뒤에 2중 for문을 사용하여 최적의 강의실을 구하는 방식으로 접근하였다. 하지만, 당연히 시간 초과가 발생하였다. N은 최대 200,000으로 N^2은 400억이다. N^2이 40,000,000으로 착각하여

2021년 4월 29일
·
0개의 댓글