반응형
[C] LeetCode 3. Longest Substring Without Repeating Characters
Coding/PS2026. 3. 20. 21:28[C] LeetCode 3. Longest Substring Without Repeating Characters

문제(원문)문제(번역)문자열 s가 주어졌을 때 중복되는 문자가 없는 가장 긴 부분 문자열의 길이를 구해라.단, s는 영어문자, 숫자, 기호, 공백이 들어갈 수 있다.접근 방법알파벳이면 26 정도로 범위를 잡으면 되지만, 이는 숫자, 기호, 공백이 모두 들어가서 어떻게 해야할지 감이 안잡혔다. 외부 라이브러리나 직접 dict 같은걸 구현하기에는 코드가 너무 길어질 것 같아서 고민하다가,아스키코드의 범위가 0부터 127이라는 것을 깨달았다. 즉 아스키 코드 범위에 대해서만 flag를 지정하고 매번 겹치는 문자가 있는지 검사하는 방법으로 코드를 구현했다. 소스 코드char map[128] = {0};void initMap(){ for(int t=0;tC언어로 작성한 코드인데, 아래와 같은 실행결과가 나..

[C] LeetCode 13. Roman to Integer
Coding/PS2026. 3. 20. 20:41[C] LeetCode 13. Roman to Integer

문제(원문) 문제(번역)로마 숫자는 I,V,X,L,C,D,M으로 표현할 수 있다.로마 숫자는 보통 큰 수부터 작은 수를 왼쪽에서 오른쪽으로 쓴다. 하지만, 4를 표현할 때는 IIII 대신 IV를 사용한다.왜냐하면 4를 만들기 위해 5에서 1을 빼기 때문이다. 이러한 원칙은 9를 만들때도 사용된다.로마 숫자가 주어졌을 때 이를 정수로 바꿔라.접근 방법처음엔 단순히 로마 숫자 심볼을 정수로 바꾸려고 시도했다. 당연히 실패했다.보통은 큰 수부터 작은 수를 차례대로 쓰나, 일부 숫자를 만들기 위해는 작은수 큰수 순서대로 적힐 수 있다고 했다.이를 활용하자. 문자열의 오른쪽에서 왼쪽으로 순회하면서, 기존 수보다 현재 수가 작으면 빼주는 형식으로 만들면 된다.그게 아니고 기존 수보다 현재 수가 크면 더해주는 형태로..

[C] LeetCode 28. Find the Index of the First Occurrence in a String
Coding/PS2026. 3. 20. 20:11[C] LeetCode 28. Find the Index of the First Occurrence in a String

문제(원문)문제(번역)needle과 haystack 문자열 변수가 주어졌을 때, haystack 안에 needle 변수에 있는 문자열이 처음 나타나는 인덱스를 반환하라.만약 존재하지 않는다면 -1을 반환하라.접근 과정단순하게 생각했다.이중 반복문을 이용해 needle 문자열이 haystack 문자열 안에 있는지 매번 확인했다. 먼저 문자열의 길이를 측정해 h와 n에 각각 저장했다.그리고 0 부터 h-n 까지 반복하면서 그 자리에서 n칸 앞으로 haystack에 needle 문자열이 있는지 확인했다.소스코드int strStr(char* haystack, char* needle) { int h = 0, n = 0, o = 0; while(haystack[h] != '\0') { h++;} w..

반응형
image