일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 투포인터
- Algorithm
- IBK기업은행 #기업은행 #디지털 #직무 #정리
- 코딩테스트
- 서버개발캠프
- 백준
- 스마일게이트
- 알고리즘
- 유니온파인드
- Union-find
- 보석쇼핑
- LIS #Algorithm #요소추적
- 카카오
- 코테
- 삼성 #코테 #2020상반기 #c++
- BaekJoon
- 카카오인턴
- 중반부
- c++
- 소감
- 식단
- 1편
- Smilegate
- BFS
- Today
- Total
목록Algorithm/LeetCode (54)
짱아의 개발 기록장
팰린드롬인지 판별하는 문제였다. 크게 2가지 방법으로 해결할 수 있었다. 1. for문으로 문자열 역전하기 시간복잡도 : O(n) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 class Solution { public: bool isPalindrome(int x) { string original = to_string(x); string reversed = ""; for(int i=original.size()-1; i>=0; i--){ reversed += original[i]; } if(original==reversed){ return true; } return false; } }; Colored by Color Scripter cs 2. 나머지와 몫으로 문자열 역전하기 시간복잡..
integer값을 반대로 출력하는 문제였다. [핵심 포인트] 가장 핵심 포인트는! 형변환이었던 것 같다. 32-bit signed integer range: [−231, 231 − 1]라고 범위가 명시되어 있었다. 특히, 음수의 경우 음수에서 양수로 바꾸면 딱 정수의 범위를 넘어가는 경우가 나올 수 있기 때문에,,,(ex.-2147483648) long long형으로 바꾸어서 string으로 변환했다. 12345678910111213141516171819202122232425262728293031323334#include class Solution {public: int reverse(int x) { bool isMinus = false; string s = ""; if(x=0; i--){ temp +=..
행과 열에 대한 개념을 확실하게 알고 있으면 쉽게 풀 수 있는 문제이다. [메인 로직] 1. (numRows-1)만큼 일직선으로 내려간 후(내려가면서 행+1, 열은 그대로) 2. (numRows-1)만큼 대각선으로 올라간다.(행-1, 열+1) 말 그래도 zigzag의 형태로 행과 열을 조절하면 된다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 class Solution { public: char map[1001][1001]; string convert(string s, int ..
팰린드롬 문제인데... 사실 풀이 방법은 여러가지가 있는 듯하다. DP, Brute Force 등... 하지만, 일단 글쓴이는 Brute Force 방법 밖에는 생각이 나지 않아 이 방법으로 풀이를 했다. 추후, 다양한 방법에 대한 풀이를 update해보겠다. Brute Force 시간복잡도 : O(n^2) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 // BruteForce class Solution { public: string..
처음에는 Brute Force로 할까? 했지만... 문제를 읽어보니 전형적인 투포인터 문제라는 것을 알 수 있었다. [메인 로직] 만약 처음나온 문자가 나온다면, num++을 해주고 map에 해당 문자를 추가해주었고 End++해주었다. 하지만 이미 나왔던 문자가 나온다면 num--해주고 map에서 해당 문자를 제거한 후 Start++해주었다. Two Pointer 방식 시간복잡도 : O(n) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 // 투포인터 class Solution { public: int lengthOfLongestSubstring(string s) { int ans = 0; int Start=0, End = 0; map m; i..
위 문제는 다양한 방식으로 풀이가 가능하다. nums의 최대크기가 1000이기 때문에 브루트포스도 가능하지만 시간복잡도를 생각하면 O(n)방식으로 푸는 것이 가장 현명해보인다. 1. Brute Force방식 시간복잡도 : O(n^2) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 class Solution { public: vector twoSum(vector& nums, int target) { vector ans; bool check = false; for(int i=0; i