깊은바다거북
개발 공부 기록
깊은바다거북
전체 방문자
오늘
어제
  • 분류 전체보기 (219)
    • JAVA (9)
    • JavaScript (15)
    • 스파르타코딩클럽 (11)
      • [내일배움단] 웹개발 종합반 개발일지 (5)
      • [내일배움캠프] 프로젝트와 트러블 슈팅 (6)
    • SQL | NoSQL (4)
    • CS 등등 (0)
    • TIL | WIL (173)
    • 기타 에러 해결 (3)
    • 내 살 길 궁리 (4)

인기 글

최근 글

최근 댓글

태그

  • 프로그래머스
  • Binary Tree(이진 트리)
  • BST(이진 탐색 트리)
  • Trie
  • 재귀 함수
  • Leetcode
  • Linked List
  • 최대 힙(Max Heap)
  • 자료 구조
  • Backtracking(백트래킹)
  • DFS(깊이우선탐색)
  • 최소 힙(Min Heap)
  • leetcode-cli
  • 트러블 슈팅 Troubleshooting
  • tree
  • 팀 프로젝트
  • POST / GET 요청
  • Inorder Traversal(중위 순회)
  • 자잘한 에러 해결
  • 시간 복잡도
  • TypeScript
  • 자바스크립트 기초 문법
  • 점화식(Recurrence Relation)
  • 코딩테스트 연습문제
  • TIT (Today I Troubleshot)
  • 혼자 공부하는 자바스크립트
  • Preorder Traversal(전위 순회)
  • 01. 미니 프로젝트
  • Til
  • BFS(너비우선탐색)
hELLO · Designed By 정상우.
깊은바다거북

개발 공부 기록

TIL | WIL

2/23 목 (지지부진해서 미안해) TIL

2023. 2. 24. 00:09

오늘은 단순한 코딩 문제 푼 것을 기록해 놓는다.

로그인 관련 RFC 문서 읽기와 테스트 코드 작성 조사중에 있다.

  • 프로그래머스 30분 - 순서쌍의 개수

    https://school.programmers.co.kr/learn/courses/30/lessons/120836

  • 프로그래머스 30분 - 모음 제거

    https://school.programmers.co.kr/learn/courses/30/lessons/120849


※ 이하는 스스로 공부하며 적어둔 노트이며 불확실한 내용이 있을 수 있습니다. 학습용으로 적합하지 않음을 유념해주세요. ※

모음 제거

https://school.programmers.co.kr/learn/courses/30/lessons/120849

순수 for문

function solution1(my_string) {
	let newStr = ''
	for (let char of my_string) {
		if (char === 'a' || char === 'e' || char === 'i' || char === 'o' || char === 'u') {
			continue;
		};
		newStr += char;
	}
	return newStr;
}

for문과 정규식 테스트

function solution2(my_string) {
	let newStr = '';
	const regex = /a|e|i|o|u/; // 통과
	// const regex = /(a|e|i|o|u)/; // 통과
	// const regex = /a|e|i|o|u+/; // 통과
	// const regex = /(a|e|i|o|u)+/; // 통과
	// const regex = /(a|e|i|o|u)+/g; // X (meet => met)
	for (const char in my_string) { 
		if (!regex.test(char)) {
			newStr += char;
		}
	}
	return newStr
}

정규식과 replace 조합

function solution3(my_string) {
	// const regex = /a|e|i|o|u/; // -> TypeError: String.prototype.replaceAll called with a non-global RegExp argument
	const regex = /a|e|i|o|u/g; // => replace, replaceAll 모두 '전부 교체'한다! 
	return my_string.replace(regex, '');
}

배운 것:

  • for (const char in my_string) 에서, const일 수 있는 이유: const char 자체가 매 루프마다 새롭게 '선언'되는 원리. 재할당 아님.
    • for (let i = 0; i < my_string.length; i++) => 여기서 let i는 루프마다 '재할당'되는 게 맞음.
  • for 문에서 반복 변수를 let으로 했을 때와 const로 했을 때의 차이, 가능한 점?
  • regexp.test는 내부적으로 전체 for문을 한 번 도는 걸까?

순서쌍의 개수

https://school.programmers.co.kr/learn/courses/30/lessons/120836

루프 반만 돌기

const solution2 = (n) => {
	let count = 0;
	for (let i = 1; i < Math.sqrt(n); i++) {
		if (n % i === 0) {
			count++;
		}
	}
	const addOne = n % Math.sqrt(n) === 0;
	return count * 2 + addOne;
}

⇒ 사실 1부터 n까지 전부 돌거나, 1부터 n의 제곱근까지만 돌거나 모두 시간 복잡도는 O(N)으로 별 차이 없다. 그래도 다른 접근법을 생각해 보았다는 것을 어필 포인트로 삼을 수 있겠다.

Sliding window 기법?

function solution4(n) {
    let count = 0;
    let left = 1, right = n;
    while(right > 0){
        if(left * right === n) {
            count++;
            left++;
						right--;
						continue;
				}
				
				if (left * right > n) {
					right--;
					continue;
				}
				
				left++
    }
    return count;
}


Uploaded by N2T

    'TIL | WIL' 카테고리의 다른 글
    • 3/1 수 (Nest.js와 TypeORM 에러 모음) TIL
    • 2/28 화 (최종 프로젝트에 돌입하다) TIL
    • 2/22 수 (뜬금없이 “RFC” 문서 조직 연구) TIL
    • 2/21 화 (이론 정리 없이 코딩만 한 하루) TIL
    깊은바다거북
    깊은바다거북

    티스토리툴바