본문 바로가기
반응형

leetcode27

[LeetCode] 14. Longest Common Prefix (C++) 문제 링크 코딩하기 전 생각하기 /* 접미사 문자열을 생성한다. 맨 앞 문자열을 나머지 문자열과 비교하면서 접미사를 구한다. 맨 앞 문자열의 0부터 i까지 부분을 tmp이라고 하자. substr 함수를 사용하자. tmp가 나머지 문자열의 앞 부분과 다르면 이전 단계까지의 접미사 문자열을 반환한다. 아니라면, 접미사 문자열에 tmp를 저장한다. tmp를 반환한다. */ 코드 class Solution { public: string longestCommonPrefix(vector& strs) { string pre = ""; for ( int i = 0; i < strs[0].length(); i++ ) { string tmp = strs[0].substr(0, i+1); for ( int j = 1; j .. 2021. 7. 27.
[LeetCode] 38. Count and Say (C++) 문제 링크 코딩하기 전 생각하기 /* 초기 문자열은 "1"이다. 1부터 시작하여 n-1번 반복한다. 새 문자열을 t라고 하자. 반복문을 통해 t를 채우자. 이전과 같은 숫자가 나오면 count++한다. 아니라면, t에 count와 해당 숫자를 추가한다. 마지막 케이스도 처리해준다. s에 t를 저장하자. s를 반환한다. */ 코드 class Solution { public: string countAndSay(int n) { string s = "1"; for ( int i = 1; i < n; i++ ) { string t = ""; int count = 1; int j = 1; for ( ; j < s.length(); j++ ) { if ( s[j] == s[j-1] ) count++; else { t.. 2021. 7. 25.
[LeetCode] 118. Pascal's Triangle (C++) 문제 링크 코딩하기 전 생각하기 /* 이중 벡터를 선언한다. numRows 숫자만큼 다음을 반복한다. row 벡터를 선언한다. row 백터 맨 앞에 1을 추가한다. 이전 row 벡터를 순회한다. 문제 설명에 있는 gif 이미지 처럼 해당 위치의 위에 있는 두 값을 더해 row 벡터에 추가한다. row 벡터 마지막에 1을 추가한다. row 벡터를 이중 벡터에 추가한다. 이중 벡터를 반환한다. */ 코드 class Solution { public: vector generate(int numRows) { vector pascal = {{1}}; for ( int i = 1; i < numRows; i++ ) { vector row; row.push_back(1); for ( int j = 1; j < pasc.. 2021. 7. 25.
[LeetCode] 455. Assign Cookies (C++) 문제 링크 코딩하기 전 생각하기 /* i와 j의 값이 동시에 올라가는 for문을 사용하자. 쿠키가 아이를 만족시킬 때 까지 j의 값을 올린다. 쿠키가 더 이상 없으면 i를 반환한다. i를 반환한다. */ 코드 class Solution { public: int findContentChildren(vector& g, vector& s) { sort(g.begin(), g.end()); sort(s.begin(), s.end()); int i = 0, j = 0; if ( s.size() == 0 ) return 0; for ( ; i s[j] ) { j++; if ( j == s.size() ) return.. 2021. 7. 25.
[LeetCode] 551. Student Attendance Record I (C++) 문제 링크 코딩하기 전 생각하기 /* s를 순회한다. L이 3번 연속 등장하면 false를 반환한다. A가 2번 등장하면 false를 반환한다. 별일 없이 반복문이 끝나면 true를 반환한다. */ 코드 class Solution { public: bool checkRecord(string s) { int a_count = 0; for ( int i = 0; i 1 && s[i] == 'L' && s[i-1] == 'L' && s[i-2] == 'L' ) return false; if ( s[i] == 'A' ) a_count++; if ( a_count == 2 ) return false; } return true; } }; 느낀점 대학생활을 하면.. 2021. 7. 24.
[LeetCode] 844. Backspace String Compare (C++) 문제 링크 코딩하기 전 생각하기 /* ss와 tt 문자열을 생성한다. s와 t 문자열을 각각 순회하여 ss, tt를 채운다. #가 등장하면 새 문자열의 마지막 문자를 지운다. 아니라면 새 문자열에 문자를 추가한다. ss와 tt를 비교하고 같으면 true, 다르면 false를 반환한다. */ 코드 class Solution { public: bool backspaceCompare(string s, string t) { string ss = "", tt = ""; for ( auto c : s ) { if ( c == '#' ) ss = ss.substr(0, ss.length()-1); else ss += c; } for ( auto c : t ) { if ( c == '#' ) tt = tt.substr.. 2021. 7. 24.
[LeetCode] 66. Plus One (파이썬) 문제 링크 코딩하기 전 생각하기 ''' answer 배열을 생성한다. digits 배열을 숫자로 변환하자. 숫자에 1을 더한다. 숫자를 문자열로 변환하고 문자열을 순회하여 answer 배열을 채운다. ''' 코드 class Solution: def plusOne(self, digits: List[int]) -> List[int]: answer = [] num = 0 for n in digits: num = num * 10 + n num += 1 for c in str(num): answer.append(c) return answer 느낀점 c++로 먼저 하다가 오버플로우가 발생해서 파이썬으로 해결하였다. (주의) 기록용으로 작성한 글입니다. 코드가 허접하거나 알고리즘의 효율이 낮을 수 있습니다. 댓글 환.. 2021. 7. 24.
반응형