LeetCode 공부 - Valid Parentheses

LeetCode(20) - Valid Parentheses 문제 소괄호, 중괄호, 대괄호로 이루어진 문자열이 주어진다. 이 문자열의 괄호들이 알맞은 pair라면 true를, 아니라면 false를 반환한다. 입력 s = "()[]{}" 출력 true 풀이 전형적인 stack문제로, 괄호가 닫힐때 마다 pair를 확인한다. 주어진 문자열의 문자들을 순회하면서 문자가 여는괄호면 stack에 쌓고, 닫는 괄호라면, 현재 stack에서 top()과 pair비교 후 pair라면 pop을, 아니면 false를 리턴한다. 코드 Visual studio에서 바로 실행하도록 임의의 main문을 함께 첨부합니다. isValid()만 보시면 됩니다. #include<iostream> #include<string> #include<stack> using namespace std; bool isValid(string s) { stack<char> st; for (char c : s) { if (c == '(' || c == '{' || c == '[') { st....

December 1, 2022 · 1 min · 208 words · Me

LeetCode 공부 - Longest Common Prefix

LeetCode(14) - Longest Common Prefix 문제 문자열 배열이 주어진다. 이 문자열 배열에서 문자가 공통인 부분만큼 문자열로 반환하라. 입력 strs = ["flower","flow","flight"] 출력 "fl" 풀이 문자열들을 사전순으로 정렬하고, 첫 번째 문자열을 기준으로 비교하여 같은 문자라면 index를 순차적으로 증가시킨다. 문자가 같을 때 까지 증가하다가 다른 문자가 나오면 기존까지 저장한 문자열을 반환한다. 코드 string longestCommonPrefix(vector<string>& strs) { vector<string> s = strs; sort(s.begin(), s.end()); string ret = ""; string pilot = s.at(0); for (int i = 0; i < pilot....

December 1, 2022 · 1 min · 144 words · Me

LeetCode 공부 - Palindrome Number

LeetCode(9) - Palindrome Number 문제 integer x가 주어질 때, x가 Palindrome(회문)을 만족하면 true를 return, 아니라면 false를 리턴 입력 x = 121 출력 true 풀이 입력 x를 string으로 변환 앞부분을 가르키는 index front와 뒷부분을 가르키는 index back을 만들어 앞부분은 증가를, 뒷부분은 감소하며 전체 string 비교 front가 back보다 커질 때 까지 비교하여 front가 back보다 커진다면 회문으로 판단, 순회를 종료하고 true반환. 비교 중 다른 값이 나온다면 곧바로 false반환 코드 class Solution { public: bool isPalindrome(int x) { string s = to_string(x); int front = 0, back = s....

December 1, 2022 · 1 min · 107 words · Me

LeetCode 공부 - Two Sum

LeetCode(1) - Two Sum 문제 integer 배열과 target이 주어질 때, 배열에서 두 정수의 합이 target을 만족하는 두 index를 반환 입력 nums = [2,7,11,15], target = 9 출력 [0,1] 풀이 배열 순회 중 현재 배열의 값과 target과의 diff 값이 hash table에 있으면, diff key의 value와 현재 배열 index를 리턴. hash table에 diff값이 없으면, 현재 배열 index의 value를 key로, index를 value로 table에 저장. 배열 순회. 코드 class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { unordered_map<int, int> umap; vector<int> ret; for (int i = 0; i < nums....

November 30, 2022 · 1 min · 111 words · Me