알고리즘 스터디 1주차

ESH·2024년 6월 21일
0

알고리즘스터디

목록 보기
1/7
post-thumbnail

알고리즘 스터디 1주차 정리

이번 글에서는 알고리즘 스터디 1주차에 진행한 내용을 정리해보겠습니다. 1주차에는 다양한 연산자, 내장 함수 및 객체, 배열과 문자열 처리에 대해 다뤘습니다.


풀어볼 문제

기본
1. 문자열 여러 번 뒤집기
2. 배열 만들기 6
3. 옹알이 (1)

심화
1. 주사위 게임 3


참고 자료


연산자

사칙연산

  • 연산자: /, *, +, -, %, **
    • 예시: 5 + 3, 10 - 2, 4 * 2, 9 / 3, 10 % 3, 2 ** 3

논리연산

  • 연산자: &&, ||, ??
    • 예시: true && false, true || false, null ?? 'default'

삼항연산자

  • 구조: 조건 ? 값1 : 값2
    • 예시: const result = (a > b) ? 'a is greater' : 'b is greater';

Optional Chaining

  • 구조: ?.
    • 예시: const value = obj?.property?.subProperty;

비트 연산, 쉬프트 연산

  • 연산자: &, |, ^, ~, <<, >>, >>>
    • 예시: 5 & 1, 5 | 1, 5 ^ 1, ~5, 5 << 1, 5 >> 1, 5 >>> 1

내장함수, 내장객체

Number, String, parseInt, parseFloat

  • 예시:
    • Number('123')
    • String(123)
    • parseInt('123')
    • parseFloat('123.45')

Array, Set, Math, Map

  • Array: Array.from('123'), Array.of(1, 2, 3)
  • Set: new Set([1, 2, 3])
  • Math: Math.random(), Math.floor(1.5)
  • Map: new Map([['key1', 'value1'], ['key2', 'value2']])

Array

from, of를 통한 배열 생성

  • 예시:
    • Array.from('123') // ['1', '2', '3']
    • Array.of(1, 2, 3) // [1, 2, 3]

join으로 배열 -> 문자열

  • 예시:
    • ['a', 'b', 'c'].join('-') // 'a-b-c'

map으로 배열 순회

  • 예시:
    • [1, 2, 3].map(x => x * 2) // [2, 4, 6]

slice, splice로 배열 변환

  • 예시:
    • array.slice(1, 3) // 부분 배열 반환
    • array.splice(1, 2, 'a', 'b') // 배열 요소 제거 및 추가

find 등으로 요소 찾기

  • 예시:
    • array.find(x => x > 10) // 조건에 맞는 첫 요소 반환

pop, push, shift, unshift로 스택, 큐 구현

  • 스택: pushpop 사용
  • : pushshift 사용

sort로 배열 정렬

  • 예시:
    • array.sort((a, b) => a - b) // 오름차순 정렬

String

split으로 문자열 -> 배열

  • 예시:
    • 'a,b,c'.split(',') // ['a', 'b', 'c']

replace, replaceAll로 문자열 치환

  • 예시:
    • 'hello world'.replace('world', 'javascript') // 'hello javascript'
    • 'hello world'.replaceAll('l', 'L') // 'heLLo worLd'

trim으로 양 옆 공백 제거

  • 예시:
    • ' hello '.trim() // 'hello'

includes, indexOf로 문자열 검색

  • 예시:
    • 'hello'.includes('ell') // true
    • 'hello'.indexOf('o') // 4

toUpperCase, toLowerCase로 문자열 대소문자 변환

  • 예시:
    • 'hello'.toUpperCase() // 'HELLO'
    • 'HELLO'.toLowerCase() // 'hello'

멱등성(Idempotence)이란?

멱등성은 특정 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질을 말합니다. 이는 함수나 연산이 한 번 수행된 이후에 동일한 입력으로 다시 수행되어도 결과가 동일함을 보장합니다. HTTP 메소드 중 일부는 멱등성을 가지며, 이는 웹 애플리케이션의 안정성과 예측 가능성을 높이는 데 중요한 역할을 합니다.

HTTP 메소드와 멱등성

  • GET: 멱등성을 가집니다. 동일한 GET 요청을 여러 번 보내도 같은 결과를 반환합니다.
  • POST: 멱등성을 가지지 않습니다. 동일한 POST 요청을 여러 번 보내면 서버에 여러 리소스가 생성될 수 있습니다.
  • PUT: 멱등성을 가집니다. 동일한 PUT 요청을 여러 번 보내도 결과가 동일합니다.
  • DELETE: 멱등성을 가집니다. 동일한 DELETE 요청을 여러 번 보내도 결과가 동일합니다.
  • HEAD: 멱등성을 가집니다. 동일한 HEAD 요청을 여러 번 보내도 결과가 동일합니다.
  • OPTIONS: 멱등성을 가집니다. 동일한 OPTIONS 요청을 여러 번 보내도 결과가 동일합니다.
  • PATCH: 멱등성을 가지지 않습니다. 동일한 PATCH 요청을 여러 번 보내면 다른 결과를 초래할 수 있습니다.

결론

1주차 스터디에서는 다양한 연산자와 내장 함수, 배열과 문자열의 처리 방법을 학습했습니다. 이는 코딩 테스트에서 자주 사용하는 기초 개념들로, 각 연산자와 메소드의 활용 방법을 이해하고 익히는 것이 중요합니다. 학습한 내용을 바탕으로 다양한 문제를 풀어볼 계획입니다.

profile
I'm studying web front-end development.

0개의 댓글