본문 바로가기 메뉴 바로가기

기록 모음

프로필사진
  • 글쓰기
  • 관리
  • 태그
  • 방명록
  • RSS

기록 모음

검색하기 폼
  • 분류 전체보기
    • CS
      • Cloud, Intra
      • Algorithm
      • Database
    • BE
      • Node.js
    • Language
      • JS, TS
      • Python
    • FE
    • TIL, WIL
    • Book
    • Learn
      • 수학
      • Git
      • AI, Data
    • Etc
    • Review
  • 방명록

CS/Algorithm (7)
[프로그래머스] 문자열 내 마음대로 정렬하기 (JavaScript)

문제 첫인상 '정렬' 키워드를 가지고 JavaScript의 sort()를 찾아보았다. 다른 언어로 공부했을 때와 다르게 각 함수나 메서드를 이해하는 데 시간이 많이 걸렸다. 특히, n번째 인덱스 값을 기준으로 sort()의 매개변수인 compareFunction을 잘 다루는 게 관건이라 생각했는데, 결국 최초 시도는 실패했다. 약 2시간 정도 삽질을 하고 나서, 머리를 비우고 다시 새롭게 접근하기로 했다. n번째 인덱스를 키로 두고 각 원소(배열)을 값으로 연결한 해시 테이블 자료구조로 접근하면 어떨까 싶어 코드를 짰는데 결국 여기서도 키를 기준으로 정렬을 해야 하기 때문에 최초 접근과 같은 굴레를 타게 되었다. 그래서 좀더 단순한 방법으로 문자열을 활용하기로 했다. 풀이 방법. 1) 각 원소(문자열)에..

CS/Algorithm 2023. 1. 20. 04:28
[프로그래머스] 최소직사각형 (JavaScript)

문제 첫인상 처음엔 회전에 대해서 구구절절 설명하길래 엄청 어려운 문제인 줄 알고 지레 겁을 먹었다. 그러나 전체적으로 읽고 해당 문제를 어떻게 풀지 생각할 시간을 가졌는데, 단순하게 최댓값을 활용하면 될 것 같았다. 자바스크립트로 문제 푸는 게 처음이라 코드 작성이 낯설게 느꼈던 듯 하다. 풀이 방법 1. 1) 각 원소(배열) 내에서 큰 값을 최댓값으로 저장한다. 2) 각 원소를 돌면서 최댓값과 해당 원소의 큰 값을 비교하여, 더 큰 걸 최댓값으로 재할당한다. 3) 각 원소(배열) 내에서 작은 값은 최솟값과 비교하여 더 큰 걸 최솟값으로 재할당한다. 즉, 긴 변들 중 가장 긴 값과 짧은 변들 중 가장 긴 값을 구해 곱한다. 풀이 1. 최댓값 function solution(sizes) { let max..

CS/Algorithm 2023. 1. 18. 23:23
[BOJ] 10818번 최소, 최대 - min/max 함수 외

10818번: 최소, 최대 첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다. www.acmicpc.net 문제 N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다. 출력 첫째 줄에 주어진 정수 N개의 최솟값과 최댓값을 공백으로 구분해 출력한다. 예제 입력 1 5 20 10 35 ..

CS/Algorithm 2022. 5. 27. 00:31
[자료구조] 파이썬으로 스택(Stack), 큐(Queue) 구현하기

자료구조 자료구조를 여러 형태가 있지만 스택과 큐에 대해 알아보고자 한다. 본 글에서는 파이썬으로 구현하였다. 스택 (Stack) 스택은 한 쪽 끝에서만 자료를 넣거나 뺄 수 있는 선형 구조(LIFO - Last In First Out; 후입선출)로 가장 최근에 넣은 자료부터 꺼내올 수 있다. 쉽게 생각하면 세로로 긴 상자에 짐을 하나씩 쌓여 있는, 혹은 접시들이 쌓여있는 형태라고 보면 좋다. 파이썬에서는 리스트(list) 자료형으로 스택을 표현할 수 있는데, 아래의 기본 연산들을 클래스로 구현하였다. ※ S는 Stack을 의미 • S.push(x): 스택의 가장 윗 데이터에 메모리를 생성하고 데이터 x를 넣는 연산 • S.pop(): 스택의 가장 윗(최신의) 데이터를 삭제하는 연산 (단, 스택이 비었다..

CS/Algorithm 2022. 4. 11. 18:17
[알고리즘] 모두의 알고리즘 | 넷째마당

큐와 스택 큐(queue) - ‘줄 서기’와 유사 - 가장 먼저 들어간 것이 가장 먼저 나옴 (First In First Out) - 인큐(enqueue): 큐에 자료를 한 개 집어넣기 - 디큐(dequeue): 큐 안에 있는 자료를 한 개 꺼내기 스택(stack) - ‘접시 쌓기’와 유사 - 가장 마지막에 들어간 것을 가장 먼저 꺼냄(Last In First Out) - 푸시(push): 스택에 자료를 하나 집어넣기 - 팝(pop): 스택 안에 있는 자료를 하나 꺼내기 딕셔너리 - { 키(key) : 값(value) } 형태의 대응 관계를 저장하는 파이썬 자료구조 data = {"Jane": 2, "Anne": 5, "Hannah": 1} data["Anne"] # 5 # 새로운 값 추가 data["S..

CS/Algorithm 2022. 2. 28. 13:38
[알고리즘] 모두의 알고리즘 | 셋째마당. 탐색과 정렬

탐색 순차 탐색 리스트 안의 원소를 순차적으로 비교하면서 탐색하는 알고리즘 # 리스트에서 특정 숫자 위치 찾기 # 입력: 리스트 a, 찾는 값 x # 출력: 찾으면 그 값의 위치, 찾지 못하면 -1 def search_list(a, x): for i in range(0, len(a)): # 리스트 a의 모든 값을 순차적으로 if x == a[i]: # x 값과 비교하여 return i # 같은 경우, 그 값의 위치 반환 return -1 # 만약 끝까지 없으면 -1 v = [17, 92, 18, 33, 58, 7, 33, 42] print(search_list(v, 33)) # 3(33은 리스트에 두 번 나오지만 처음 나온 위치만 출력) print(search_list(v, 999)) # -1(999은 ..

CS/Algorithm 2022. 2. 19. 15:41
[알고리즘] 모두의 알고리즘 | 첫째마당. 알고리즘 기초

문제01 | 1부터 n까지의 합 구하기 방법1. 1~n까지 순서대로 덧셈 계산 def sum_n(n): s = 0 # 합을 계산할 변수 for i in range(1, n + 1): # 1부터 n까지 반복 (n+1은 제외) s = s + i return s print(sum_n(10)) # 1부터 10까지 합(입력:10, 출력:55) 방법2. 1+n, 2+(n-1), ... 맨 앞자리 숫자와 맨 뒷자리 숫자끼리 더하는 합공식 적용 (n(n+1)/2) def sum_n(n): s = 0 # 합을 계산할 변수 for i in range(1, n + 1): # 1부터 n까지 반복 (n+1은 제외) s = s + i return s print(sum_n(10)) # 1부터 10까지 합(입력:10, 출력:55) ..

CS/Algorithm 2022. 2. 12. 23:50
이전 1 다음
이전 다음

Blog is powered by Tistory / Designed by Tistory

티스토리툴바