본문 바로가기

Problem solving/LeetCode22

[LeetCode] 14. Longest Common Prefix (C++) 문제 문자열 배열이 주어질 때 가장 긴 공통의 prefix 문자열을 찾아라. 없으면 “”를 리턴 생각할 것 배열의 크기가 하나만 있을 때를 생각하기 a. 문제의 조건 : 1 2023. 6. 29.
[LeetCode] 13. Roman to Integer (C++) 문제 로마 숫자는 I, V, X, L, C, D, M으로 나타낸다. 이를 정수로 바꾼 값은? 보통의 경우에는 왼쪽으로 갈 수록 큰 숫자에서 작은 숫자로 향하는데, 반대의 경우 다른 숫자를 나타낸다. 그 예로 숫자 4는 IIII가 아니라 IV로 나타낸다. 생각할 것 숫자와 우선순위를 어떻게 간단히 나타낼까? map을 사용하자! 그 중에서도 키값의 순서가 필요 없으므로 unordered_map을 사용하기 코드 class Solution { public: int romanToInt(string s) { unordered_map m = { {'I', 1}, {'V', 5}, {'X', 10}, {'L', 50}, {'C', 100}, {'D', 500}, {'M', 1000} }; int res = 0; for.. 2023. 6. 27.
[LeetCode] 11. Container With Most Water (C++) 문제 높이와 길이 N 배열이 주어질 때 가장 많은 물을 담을 수 있는 경우 생각할 것 모든 경우를 모두 탐색하거나 투포인터를 써야할 것 같다. 하지만 문제의 조건으로 주어진 배열의 최대 길이가 매우 길기 때문에 모든 경우를 탐색하면 시간초과가 날 것이다! 코드 - 브루트포스 class Solution { public: int maxArea(vector& height) { int max = 0, tmp = 0; for(int i=0; i 2023. 6. 27.
[LeetCode] 8. String to Integer (atoi) (C++) 문제 문자열을 정수로 바꾸기 조건 공백은 제외 -, +문자는 양수인지 음수인지를 의미 다음에 오는 문자가 정수가 아닐 경우 끝을 의미 자릿수 앞에 0이 붙어있는 경우 무시 정수 범위에 속하지 않는 경우 -2^31이나 2^31 - 1로 고정 반례 입력 : "-91283472332” 생각하지 못했던 조건..! sign을 return하기 전 마지막에 붙여서 int범위를 확인할 때 잘못된 값과 비교를 하게 되었다! if (sign * res INT_MAX/10) return INT_MAX; 입력 : "+1” 문자 +는 그냥 무시해도 된다고 생각을 해서 조건에 넣지 않았더니 else에 걸려서 for문이 종료되었다. e.. 2023. 6. 23.