본문 바로가기

Algorithm/자료구조

(126)
(Python3) - 프로그래머스(코딩테스트 입문) : 인덱스 바꾸기 https://school.programmers.co.kr/learn/courses/30/lessons/120895 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr배열 원소 swap문제였습니다.📕 풀이방법📔 입력 및 초기화my_string을 list화해 저장합니다.📔 풀이과정num1번째와 num2번째 값을 바꿔줍니다.📔 정답 출력 | 반환my_string을 빈 문자열에 대해 join한 결과를 반환합니다.📕 Code📔 Python3def solution(my_string, num1, num2): my_string = list(my_string) my_string[num1], my_st..
(Python3) - 프로그래머스(코딩 기초 트레이닝) : 스택으로 큐 구현 https://school.programmers.co.kr/learn/courses/11133/lessons/71158 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.krstack으로 queue를 구현하는 문제였습니다.📕 풀이방법📔 입력 및 초기화1. func_a: stack이 비어있으면 error를 아니라면 가장 위의 원소를 pop한 뒤 해당 원소를 반환합니다.2. func_b: stack1의 원소들을 stack2로 옮깁니다.3. func_c: 인자로 받은 stack이 비어있는지 여부를 반환합니다.4.정답 변수 answer를 선언해줍니다.📔 풀이과정1. ..
(C++, Python3) - LeetCode (easy) 3043. Find the Length of the Longest Common Prefix https://leetcode.com/problems/find-the-length-of-the-longest-common-prefix/ Trie 자료구조로 해결한 문제였습니다.📕 풀이방법📔 입력 및 초기화조회에 최적화된 hash 기반 자료구조인 c++엔 unordered_map, python에서는 dictionary를 이용해 trie구조를 생성해줍니다.1. class TrieNode를 선언합니다.  1-1. 하나의 trie node는 member변수 두개(dict인 children과 boolean isEndOfWord)를 가지고 있습니다.2. class Trie를 선언합니다.    2-1. member변수 root를 선언해 생성자에 TrieNode instance를 생성한 결과값을 저장합니다.    ..
(C++) - LeetCode (easy) 1832. Check if the Sentence Is Pangram https://leetcode.com/problems/check-if-the-sentence-is-pangram/description/간단 구현 문제였습니다.📕 풀이방법📔 입력 및 초기화alphabat과 빈도 수를 각각 key, value로 alphaMap을 선언해줍니다.📔 풀이과정sentence의 원소를 순회하며 alphabat별 빈도수를 계산해줍니다.📔 정답 출력 | 반환map의 size가 곧 sentence에서 나온 alphabat의 종류이므로 모든 종류의 개수 26개인지 여부를 확인합니다.📕 Code📔 C++class Solution {public: bool checkIfPangram(string sentence) { map alphaMap; for(au..
(C++) - LeetCode (easy) 1796. Second Largest Digit in a String https://leetcode.com/problems/second-largest-digit-in-a-string/description/set을 사용해본 문제였습니다.📕 풀이방법📔 입력 및 초기화digit이 나온 문자들을 저장할 set numSet을 선언한 후 s에 대해 for loop를 수행하며 문자별 digit들을 저장해줍니다.📔 정답 출력 | 반환1. digit이 1개밖에 없다면 정답은 -1입니다2. set 자료구조는 오름차순으로 정렬되며 원소가 insert되므로 rbegin에서 iterator를 하나 증가시켜준 주소값을 반환해줍니다.📕 Code📔 C++class Solution {public: int secondHighest(string s) { set numSet; ..
(C++) - LeetCode (easy) 1791. Find Center of Star Graph https://leetcode.com/problems/find-center-of-star-graph/description/자료구조 map을 활용한 문제였습니다.📕 풀이방법📔 입력 및 초기화1. key는 node번호, value는 node가 연결되어있는 다른 node들의 정보에 대한 map m을 선언해줍니다.2. edges의 정보에 대해 양방향 형식으로 map에 간선 정보를 저장합니다.3. nodeCnt를 선언해 m.size()가 곧 node의 총 개수이므로 이 값을 저장합니다.4. 정답 변수 ans를 선언해줍니다.📔 풀이과정m의 원소를 순회하며 el.second(node가 연결되어 있는 node들의 정보)가 nodeCnt - 1(자기 자신 node 제외)라면 ans에 node번호 el.first값을..
(C++) - LeetCode (easy) 1700. Number of Students Unable to Eat Lunch https://leetcode.com/problems/number-of-students-unable-to-eat-lunch/description/자료구조를 이용한 문제였습니다.📕 풀이방법📔 입력 및 초기화1. 학생의 선호 정보를 queue에 저장하기 위한 studentQueue를 선언 후 students정보를 저장합니다.2. 학생의 이동횟수 moved와 비교할 sandwich의  index idx선언 후 각각 0으로 초기화합니다.* sandwiches는 문제 설명에서는 stack이라고 설명했으나 0인 index부터 1씩 증가하면 방향만 다른 stack 모양이므로 따로 자료구조를 만들어 원소들을 저장하진 않았습니다.📔 풀이과정1. studentQueue에 원소가 있고 학생들이 한 바퀴 이동하기 전인 ..
(C++) - LeetCode (easy) 1656. Design an Ordered Stream https://leetcode.com/problems/design-an-ordered-stream/description/class와 vector를 사용해 구현하는 문제였습니다.📕 풀이방법📔 입력 및 초기화자료를 저장할 string vector v와 ptr을 선언해 생성자에서 n+1만큼 capacity를 v에 부여하고 ptr을 1로 초기화합니다.📔 풀이과정insert함수 호출시 마다 다음을 수행해야합니다.1. v의 idKey위치에 value를 넣습니다.2. 연결할 vector chunk를 선언해 ptr의 해당하는 원소부터 while loop를 수행하며 오른쪽으로 인접한 chunk들을 v로부터 이어줍니다.3. chunk를 반환합니다.📕 Code📔 C++class OrderedStream {publi..