⭐️ 나중에 잊을 때쯤 다시 풀어볼 문제 ⭐️ 초기 접근 방법 ❗️처음에 생각한 방향 스택을 사용하는 것이 가장 적합하다고 판단되어 stack array를 따로 만들고 해당 stack[sp]와 주어진 배열 asteroids[i]의 비교를 통해서 구현하려고 함 [ 처음 코드 ] int* asteroidCollision(int* asteroids, int asteroidsSize, int* returnSize){ int top=-1; int* stack = (int*)malloc(asteroidsSize*sizeof(int)); stack[++top] = asteroids[0]; for(int i=1; i
좋은 문제라고 생각 나중에 다시 풀어보기 좋음! 초기 접근 방법 ❗️처음에 생각한 방향 처음에는 포인터와 새로운 배열을 두고, '*'을 만나면 포인터를 이동해서 앞앞에 있는 character을 배열에 두고, 아니라면 배열에 그냥 두는 방식으로 전개하려고 함 [ 처음 코드 ] char * removeStars(char * s){ int len = strlen(s); char* ret[len]; int cnt=0; char reverse[len]; for(int i=len-1; i>0; i--){ if(s[i] == '*' && s[i-1] != '*'){ if(cnt>0){ for(int j=0; j> stack pointer를 썼던 것으로 생각이 되어서 sp라는 포인터 변수를 둠 ✅ 조건에 따라 sp를 ..
⭐️ 나중에 잊을 때쯤 다시 풀어볼 문제 ⭐️ 초기 접근 방법 ❗️처음에 생각한 방향 일단 문제를 해결할 알고리즘을 잘못 생각함 문제를 읽고, 결국 포함하고 있는 각 알파벳에 대한 빈도가 같으면 된다고 판단해서 코드를 구현 [ 처음 코드 ] bool closeStrings(char * word1, char * word2){ int len1 = strlen(word1); int len2 = strlen(word2); int ht1[26]={0,}; // # of alphabets int ht2[26]={0,}; for(int i=0; i
⭐️ 이 문제 다시 풀어보기 ⭐️ 초기 접근 방법 ❗️처음에 생각한 방향 일단 주어진 배열의 수가 k보다 크면 볼 필요 없으니 if 문으로 조건을 한 번 걸고, 서로 다른 두 수를 더해야하니 i != j 가 다른 조건도 걸어 두 번의 for문을 중첩. 처음에는 시간 복잡도를 생각하지 않고 brute force로라도 코드 구현해봄. Brute Force int maxOperations(int* nums, int numsSize, int k){ int ret=0; for(int i=0; i k) r--; else l++; } return ret; } Take aways ✅ C언어 을 통해 주어진 배열을 quick sort 정렬 해줌 : qsort가 정의된 헤더 파일 void qsort (void *base,..
초기 접근 방법 ❗️처음에 생각한 방향 for문으로 string의 길이만큼 다 돌면서 주어진 길이 k만큼씩 반복해서 일일이 찾을 생각 하지만 시간 복잡도가 O(n*n)인 것을 알기 때문에 좋지 않은 알고리즘이라고 생각함 코드 자체는 금방 짜기 때문에 일단 Brute Force로 되나 해보기나 하자라는 마음으로 아래와 같이 구현 Brute Force bool isVowel(char s){ switch(s){ case 'a': case 'e': case 'i': case 'o': case 'u': return true; default: return false; } } int maxVowels(char * s, int k){ int len = strlen(s); int max = 0, temp = 0; for..
⭐️ 이 문제 다시 풀어보기 ⭐️ 초기 접근 방법 ❗️처음에 생각한 방향 두 높이 사이의 차이를 하나의 변수에 두고, 반복문을 돌면 해당 변수와 다른 높이 사이의 차이 크기를 비교 더 높이 차이가 적은 것이 있으면 넓이 계산해보고 현재 max인 넓이와 비교하기 ❌ 코드로 구현하다가 실패 예외사항이 너무 많고, 신경써야할 부분이 너무 많음 최종 접근 ✅ 넓이를 결정할 높이는 두 height 중에 더 짧은 길이로 결정됨 따라서, (b-a)*min(a,b) 가 최종 넓이 ✅ 가로 길이와 높이를 모두 다 알아야하고, 가로 길이는 뺄셈 연산을 통해 구해야하기 때문에 맨 앞부터 시작하는 Left pointer, 맨 뒤부터 시작하는 Right pointer 를 두고 계산 ✅ 반복문 탈출 조건은? Left Pointe..