Algorithm
-
Stack(스택) Stack은 특정 데이터를 누적해서 쌓아 올린 형태의 구조이다. 스택의 push, pop 스택의 특징 같은 구조, 같은 크기의 자료를 정해진 방향으로만 쌓을 수 있다. top은 가장 위(마지막)에 쌓여있는 데이터를 가리킨다. top을 통해 top위 부분에 삽입하는 연산을 push, top을 삭제하는 연산을 pop이라고 한다. LIFO(Last In First Out), 가장 마지막에 삽입된 자료가 가장 먼저 삭제되는 구조 스택이 비어있을 때 pop연산을 하게되면 stack underflow가 일어난다. 스택이 가득찼을 때 push연산을 하게되면 stack overflow가 일어난다. 구현 class My_stack: # Constructor def __init__(self): self...
[DataStructure] Stack(스택)Stack(스택) Stack은 특정 데이터를 누적해서 쌓아 올린 형태의 구조이다. 스택의 push, pop 스택의 특징 같은 구조, 같은 크기의 자료를 정해진 방향으로만 쌓을 수 있다. top은 가장 위(마지막)에 쌓여있는 데이터를 가리킨다. top을 통해 top위 부분에 삽입하는 연산을 push, top을 삭제하는 연산을 pop이라고 한다. LIFO(Last In First Out), 가장 마지막에 삽입된 자료가 가장 먼저 삭제되는 구조 스택이 비어있을 때 pop연산을 하게되면 stack underflow가 일어난다. 스택이 가득찼을 때 push연산을 하게되면 stack overflow가 일어난다. 구현 class My_stack: # Constructor def __init__(self): self...
2021.07.06 -
Data Structure(자료구조) 컴퓨터 과학에서 효율적인 접근 및 수정을 가능하게 하는 자료의 조직, 관리, 저장을 의미 데이터 값의 모임, 데이터 간의 관계, 그리고 데이터에 적용할 수 있는 함수나 명령을 의미 신중히 선택한 자료구조는 보다 효율적인 알고리즘을 사용할 수 있게 함 효율적인 자료구조란 프로그램의 실행시간 효율과 저장공간 효율을 의미함 각 자료구조의 장단점을 숙지하고 상황별로 적합한 자료구조를 선택하는 능력이 중요 자료구조의 분류 https://wayhome25.github.io/cs/2017/04/17/cs-18/ 단순구조 : 프로그래밍에서 사용되는 기본 데이터 타입 선형구조 : 저장되는 자료의 전후 관계가 1:1 인 구조 (리스트, 스택, 큐 등) 비선형구조: 데이터 항목 사이의 ..
Data Structure(자료구조)와 Algorithm(알고리즘)Data Structure(자료구조) 컴퓨터 과학에서 효율적인 접근 및 수정을 가능하게 하는 자료의 조직, 관리, 저장을 의미 데이터 값의 모임, 데이터 간의 관계, 그리고 데이터에 적용할 수 있는 함수나 명령을 의미 신중히 선택한 자료구조는 보다 효율적인 알고리즘을 사용할 수 있게 함 효율적인 자료구조란 프로그램의 실행시간 효율과 저장공간 효율을 의미함 각 자료구조의 장단점을 숙지하고 상황별로 적합한 자료구조를 선택하는 능력이 중요 자료구조의 분류 https://wayhome25.github.io/cs/2017/04/17/cs-18/ 단순구조 : 프로그래밍에서 사용되는 기본 데이터 타입 선형구조 : 저장되는 자료의 전후 관계가 1:1 인 구조 (리스트, 스택, 큐 등) 비선형구조: 데이터 항목 사이의 ..
2021.07.03 -
https://leetcode.com/problems/two-sum/ Two Sum - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 1. Two Sum Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target. You may assume that each input would have exactly on..
[Leetcode] 1. Two Sum - Top Interview Questionshttps://leetcode.com/problems/two-sum/ Two Sum - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 1. Two Sum Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target. You may assume that each input would have exactly on..
2021.07.01 -
programmers.co.kr/learn/courses/30/lessons/68935 코딩테스트 연습 - 3진법 뒤집기 자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요. 제한사항 n은 1 이상 100,000,000 이하인 자연수 programmers.co.kr 문제 설명 주어지는 자연수 n을 3진법으로 바꾸고 그 3진법을 앞뒤로 뒤집은 후 이를 다시 10진법으로 표현한 수를 구하는 문제. 문제 풀이 3진법으로 바꾼 수를 담는 tmp를 ""로 초기화한다. 주어진 자연수 n을 3으로 나눈 나머지를 문자열로 변환하여 tmp의 뒤에 붙인다. n을 3으로 나눈 몫을 n에 다시 담는다. n이 0이..
[Programmers - lv01] 3진법 뒤집기(Python)programmers.co.kr/learn/courses/30/lessons/68935 코딩테스트 연습 - 3진법 뒤집기 자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요. 제한사항 n은 1 이상 100,000,000 이하인 자연수 programmers.co.kr 문제 설명 주어지는 자연수 n을 3진법으로 바꾸고 그 3진법을 앞뒤로 뒤집은 후 이를 다시 10진법으로 표현한 수를 구하는 문제. 문제 풀이 3진법으로 바꾼 수를 담는 tmp를 ""로 초기화한다. 주어진 자연수 n을 3으로 나눈 나머지를 문자열로 변환하여 tmp의 뒤에 붙인다. n을 3으로 나눈 몫을 n에 다시 담는다. n이 0이..
2021.04.28 -
가사 검색 코딩테스트 연습 - 가사 검색 programmers.co.kr 문제 설명 주어지는 words의 단어들을 quries로 찾아내는 문제. quries에는 '?'라는 와일드 카드가 존재하고 ?는 모든 문자에 해당한다. 입출력 예 문제를 보자마자 Trie로 풀어야겠다는 생각에 예전 기억을 떠올리며 Trie 자료 구조를 이용하여 문제를 풀었지만, 효율성 테스트에서 막혔다. 가사검색 풀었던 친구에게 물어보니 reverse trie를 만들어서 해결하라는 말을 듣고, 문제를 통과했다. 문제 풀이 소스코드 : C++ Trie 를 이용한 풀이 #include #include #include #include using namespace std; int cnt; class Trie{ public: Trie *chi..
[Programmers - lv04] 가사 검색 (C++/Python)가사 검색 코딩테스트 연습 - 가사 검색 programmers.co.kr 문제 설명 주어지는 words의 단어들을 quries로 찾아내는 문제. quries에는 '?'라는 와일드 카드가 존재하고 ?는 모든 문자에 해당한다. 입출력 예 문제를 보자마자 Trie로 풀어야겠다는 생각에 예전 기억을 떠올리며 Trie 자료 구조를 이용하여 문제를 풀었지만, 효율성 테스트에서 막혔다. 가사검색 풀었던 친구에게 물어보니 reverse trie를 만들어서 해결하라는 말을 듣고, 문제를 통과했다. 문제 풀이 소스코드 : C++ Trie 를 이용한 풀이 #include #include #include #include using namespace std; int cnt; class Trie{ public: Trie *chi..
2020.08.31 -
더 맵게 코딩테스트 연습 - 더 맵게 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같�� programmers.co.kr 문제 설명 우선순위 큐를 이용하여 해결하는 문제. 섞은 음식의 스코빌 지수 = 가장 맵지 않은 음식의 스코빌 지수 + (두 번째로 맵지 않은 음식의 스코빌 지수 * 2) 이 값을 우선순위 큐에 갱신 해주며 문제의 조건을 해결하면 된다. 문제 풀이 소스코드 : C++ #include #include #include #include using namespace std; int solution(vector scoville, int K) { i..
[Programmers - lv02] 더 맵게 (cpp / python)더 맵게 코딩테스트 연습 - 더 맵게 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같�� programmers.co.kr 문제 설명 우선순위 큐를 이용하여 해결하는 문제. 섞은 음식의 스코빌 지수 = 가장 맵지 않은 음식의 스코빌 지수 + (두 번째로 맵지 않은 음식의 스코빌 지수 * 2) 이 값을 우선순위 큐에 갱신 해주며 문제의 조건을 해결하면 된다. 문제 풀이 소스코드 : C++ #include #include #include #include using namespace std; int solution(vector scoville, int K) { i..
2020.07.21 -
자릿수 더하기 코딩테스트 연습 - 자릿수 더하기 자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요. 예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다. 제한사항 N의 범위 : 100,000,000 이하의 자연수 입출 programmers.co.kr 문제 설명 주어지는 숫자의 각 자릿수를 더하는 문제. 방법은 여러가지다, 주어지는 숫자를 to_string으로 문자열화 하여 문자 1개씩 처리해도 되고, 숫자를 10으로 나누어 몫과 나머지를 이용하여 풀어도 된다. 문제 풀이 소스코드 : C++ 문자열 변환 #include using namespace std; int solution(int n){ int answer = 0;..
[Programmers - lv01] 자릿수 더하기 (cpp / python)자릿수 더하기 코딩테스트 연습 - 자릿수 더하기 자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요. 예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다. 제한사항 N의 범위 : 100,000,000 이하의 자연수 입출 programmers.co.kr 문제 설명 주어지는 숫자의 각 자릿수를 더하는 문제. 방법은 여러가지다, 주어지는 숫자를 to_string으로 문자열화 하여 문자 1개씩 처리해도 되고, 숫자를 10으로 나누어 몫과 나머지를 이용하여 풀어도 된다. 문제 풀이 소스코드 : C++ 문자열 변환 #include using namespace std; int solution(int n){ int answer = 0;..
2020.07.01 -
이상한 문자 만들기 코딩테스트 연습 - 이상한 문자 만들기 문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 programmers.co.kr 문제 설명 공백을 기준으로 문자열을 잘라 해당 문자열의 홀수 번째와 짝수 번째를 처리하는 문제. 스플릿으로 공백을 기준으로 문자열을 자르면될 것 같지만, 공백이 2개 이상 들어왔을 때 처리할 수가 없다. 따라서 직접 스플릿을 구현하여 푸는 문제이다. c++은 원래 구현을해야겠지만(split함수가 존재하지 않음) python같은 경우엔 split이 있어도 쓰지 못한다. 문제 풀이 소스코드 : C++ #include #include ..
[Programmers - lv01] 이상한 문자 만들기 (cpp / python)이상한 문자 만들기 코딩테스트 연습 - 이상한 문자 만들기 문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 programmers.co.kr 문제 설명 공백을 기준으로 문자열을 잘라 해당 문자열의 홀수 번째와 짝수 번째를 처리하는 문제. 스플릿으로 공백을 기준으로 문자열을 자르면될 것 같지만, 공백이 2개 이상 들어왔을 때 처리할 수가 없다. 따라서 직접 스플릿을 구현하여 푸는 문제이다. c++은 원래 구현을해야겠지만(split함수가 존재하지 않음) python같은 경우엔 split이 있어도 쓰지 못한다. 문제 풀이 소스코드 : C++ #include #include ..
2020.07.01