코딩테스트

    [골3] 2143 - 두 배열의 합

    #include #include #include #include #include #include #include #include #include using namespace std; using ll = long long; #pragma region 상하좌우 / 위치 const pair dir[] { { 1, 0 }, { -1, 0 }, { 0, -1 }, { 0, 1 }, }; #define _y first #define _x second #pragma endregion #pragma region 빠른 입출력 #define FAST_IO() \ {\ ios::sync_with_stdio(false);\ cin.tie(NULL); \ cout.tie(NULL); \ }\ #pragma endregion i..

    [실2] 1182 - 부분수열의 합

    #include #include #include #include #include #include #include #include #include using namespace std; using ll = long long; #pragma region 상하좌우 / 위치 const pair dir[] { { 1, 0 }, { -1, 0 }, { 0, -1 }, { 0, 1 }, }; #define _y first #define _x second #pragma endregion #pragma region 빠른 입출력 #define FAST_IO() \ {\ ios::sync_with_stdio(false);\ cin.tie(NULL); \ cout.tie(NULL); \ }\ #pragma endregion v..

    파이썬으로 문제 풀 때 주의해야할 점들

    1. input() 말고 sys.stdin.readline() 를 사용하자. 결론만 말하자면, 입출력 속도가 다음과 같다. sys.stdin.readline() > raw_input() > input() 뭐 어느정도로 더 빠르고 느리냐는, 코딩 테스트 문제푸는 수준에서 다룰만한 내용이 아니므로 넘어가도록 하고, 직관적으로만 느꼈던 것은, input() 으로 코드를 제출할 시, 시간초과가 뜨지만, sys.stdin.readline() 으로 제출할 시 정답이 뜨더라는 것이다. 이와 비슷한 이슈는 이미 이전부터 있었다. 참고 링크 : https://www.acmicpc.net/board/view/19327 한편, 나는 입출력을 지금까지 이런 방식으로 했다. a = [int(x) for x in input()...

    파이썬 1157 - 단어 공부

    str=input().lower() wordList=list(set(str)) cnt=[] for i in wordList: tmp=str.count(i) cnt.append(tmp) if cnt.count(max(cnt)) >= 2: print('?') else: print(wordList[(cnt.index(max(cnt)))].upper())

    [LeetCode] Majority Element

    #include using Intpair = pair; class Solution { public: int majorityElement(vector& nums) { map m; for (const auto& item : nums) m[item]++; vector v(m.begin(), m.end()); sort(v.begin(), v.end(), [&](Intpair& lRef, Intpair& rRef) { return lRef.second < rRef.second; }); return (*(v.end() - 1)).first; } };

    [LeetCode] Remove All Adjacent Duplicates in String II

    string removeDuplicates(string str, int k) { stack s; auto begin = str.begin(), end = str.end(); while (begin != end) { auto ch = *begin; if (!s.empty()) { auto& top = s.top(); if (top.first != ch) s.push({ ch, 1 }); else top.second++; if (top.second == k) s.pop(); } else s.push({ ch, 1 }); begin++; } str.clear(); while (!s.empty()) { auto top = s.top(); for (int i = 0; i < top.second; i++) str...

    [LeetCode] Remove All Adjacent Duplicates In String

    string removeDuplicates(string str) { stack s; auto begin = str.begin(), end = str.end(); while (begin != end) { auto ch = *begin; if (!s.empty() && s.top() == ch) s.pop(); else s.push(ch); begin++; } str.clear(); while (!s.empty()) { str.push_back(s.top()); s.pop(); } reverse(str.begin(), str.end()); return str; }

    [LeetCode] Valid Palindrome II

    bool Check(string str, int s, int e) { while (s

    [LeetCode] Excel Sheet Column Number

    int titleToNumber(string columnTitle) { int sum = 0, time = 1; // A 대문자 아스키 코드는 65부터 시작 while (!columnTitle.empty()) { int val = columnTitle.back() - 64; if (sum == 0) sum += val; else sum += pow(26, time++) * val; columnTitle.pop_back(); } return sum; }

    [LeetCode] Evaluate Reverse Polish Notation

    알고리즘 풀땐 switch보단 if를 선호한다고 들었는데 사칙연산으로 인해 어쩔 수 없이 사용함. int evalRPN(vector& tokens) { stack s; for (const auto& ch : tokens) { int ans = 0; // 연산 if (!isdigit(ch[0]) && ch.size() == 1) { int n2 = s.top(); s.pop(); int n1 = s.top(); s.pop(); switch (ch[0]) { case '+': ans += n1 + n2; break; case '-': ans += n1 - n2; break; case '*': ans += n1 * n2; break; case '/': ans += n1 / n2; break; } s.push(..