본문 바로가기

Overall37

잘 까먹는 자료구조들 Balanced Tree 왼쪽과 오른쪽의 자식 수가 같거나 하나의 차이만 나는 것 Binary Search Tree 이진탐색을 할 때 사용되는 트리로 부모 노드의 오른쪽에는 부모노드보다 큰 수, 왼쪽에는 작은 수가 들어간다. Heap 최대힙, 최소힙이 있는데 모두 Root가 각각 최대이거나 최소이다. 즉, 가장 마지막으로 Numbering되는 자식이 최소이거나 최대이다. 삽입 연산 시에는 트리의 가장 마지막 자식 다음에 넣고 부모 노드와 하나씩 비교 / 스왑해가면서 자기 자리를 찾는다. 삭제 연산 시에는 루트값을 삭제하고 가장 마지막 자식을 루트에 넣은 후 하나씩 비교하면서 트리를 정립한다. 이때 힙과 BST의 차이는 힙은 맨 위가 max 혹은 min이라는 것 외에 정렬이 되어있지 않지만 BST의 경우는.. 2022. 6. 3.
클린 코드:에자일 소프트웨어 장인 정신 by 로버트 C. 마틴 그 유명한 클린코드를 읽어보려고 한다. 매일 매일 조금씩 읽어봐야지 읽자마자 중요한 단락이 눈에 들어왔다. 그것은 "이 책에 나오는 모든 지침은 절대적이라 생각하면 안되며, 언제든지 개선의 여지가 있다고 생각하는 편이 바람직하다."라는 것이다.프로그래밍이라는 것이 시간이 지남에 따라 비효율적이었던 것이 효율적인 것이 되기도 하고 효율적이었던 것이 비효율적인 것으로 바뀌기도 하기 때문이다. { 추천사 } "사소한 곳에서 발휘하는 정직은 사소하지 않다"라는 덴마크 속담이 있다고 한다. 또한, 저자에서는 "신은 세세함에 깃들어 있다."라고 말한다. 세세하고 사소해보이는 것도 중요하다는 이야기 같다. 근데 확실히 깨끗한 코드를 작성하는 것 뿐만 아니라 프로그래밍에서는 세밀하고 사소한 것이 중요한 것 같다. 그런.. 2021. 12. 3.
[토이프로젝트] 쇼핑리스트: 자바스크립트 작성 [작성해야할 기능] +버튼을 누르면 input box에 들어간 텍스트를 아이템으로 추가하기 [구현] 1. 아이템 추가하기 (1) 일단 add button이 눌리면 이벤트를 호출한다. (2) 이벤트가 호출되었을 때 만약 item name이 비워져 있으면 아이템 이름을 입력하라고 하고 함수를 종료한다. -> item price가 비워져 있으면 자동으로 가격을 0으로 만들고 아이템을 추가한다. - 아이템 추가시 create element로 div 아이템을 만든 후 클래스를 item으로 설정해준다. -> 만들어진 element의 innerhtml을 item name과 item price를 넣어서 만들어준다. 이 때 textcontent가 아니라 inner html을 이용하는 이유는 단순히 텍스트만 추가되는 것이.. 2021. 12. 1.
[토이프로젝트] 쇼핑리스트: CSS 작성 [영수증 레이아웃 만들기] 이제 만들어진 html을 바탕으로 스타일링을 하려고 한다. 먼저 main클래스의 배경화면을 영수증처럼 해줘야하는데 어떻게 해야할지 고민이다. background-image를 쓸까? 아니면 대충 그렇게 보이는 것을 만들까? 라고 생각해서 mdn에서 background-image를 찾았는데 새로운걸 배웠다. Even if the images are opaque and the color won't be displayed in normal circumstances, web developers should always specify a background-color.If the images cannot be loaded—for instance, when the network is dow.. 2021. 12. 1.
[토이프로젝트] 쇼핑리스트 사이트: 디자인 및 html 작성 강의를 듣고 있는 사이트에서 토이 프로젝트로 쇼핑리스트 사이트를 만드는 것이 나와서 직접 해보려고 한다. 일단 내가 대충 만든 레이아웃은 다음과 같다. 위의 디자인을 토대로 필요한 요소들을 html로 현재 만들고 있는 중이다. 아이콘들은 fontawesome을 이용했다. Shopping List Delete Checked name price name price name price Total: checked-price unchecked-price [Main Content] - 메인 요소들이 들어갈 div를 만들었다. DOM Tree에 많은 요소를 추가하는 꼴이 되지만 배경 이미지를 영수증으로 표현하기 위해서 그렇게 선택했다. [Add Items] - Input Box: 하나는 아이템 이름을 적기 위해, 다.. 2021. 12. 1.
Programmers / Hash - 베스트 앨범 https://programmers.co.kr/learn/courses/30/lessons/42579 코딩테스트 연습 - 베스트앨범 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 programmers.co.kr 어떤식으로 정렬할지 감이 잘 안와서 걍 brute force로 풀었다. [내가 짠 코드] import java.util.*; class Solution { public int[] solution(String[] genres, int[] plays) { ArrayList answerList = new ArrayList(); HashMap genrePlay = n.. 2021. 8. 29.
루비 온 레일즈 api 만들기 (2) 0. command not found 에러 - 이유: zsh 사용 어제 분명히 환경을 설치하고 잤는데 오늘 보니 > rbenv zsh: command not found: rbenv 이런 에러가 떴다... 왜 그런가해서 찾아봤더니 zsh를 쓰기 때문이라는 설명을 발견했다. (참고 사이트: https://daydreamx.tistory.com/entry/WSL2-shopt-not-found-%EA%B0%80-%EB%B0%9C%EC%83%9D%ED%96%88%EC%9D%84-%EB%95%8C) 문제는 위 사이트에 나와있는 대로 ~/.bashrc가 실행되지 않아서였다. 그래서 참고사이트에서 추천해준 방법대로 > exec bash > source ~/.bashrc > exec zsh 위의 명령어를 입력했더니 정상.. 2021. 8. 22.
Ruby on Rails 공부하기_wsl2 환경 설정하기 (1) 1. 환경 설정 나는 wsl2를 이용하고 있기 때문에 리눅스용 루비와 레일즈를 설치하려고 했다. 먼저 나와있는 대로 진행을 했다. 그런데 rbenv install 2.7.4를 진행할 때 자꾸 다음과 같은 오류가 나고 설치가 되지 않았다. Downloading ruby-2.7.4.tar.bz2... -> https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.4.tar.bz2 Installing ruby-2.7.4... BUILD FAILED (Ubuntu 20.04 using ruby-build 20210804-1-g57c397d) Inspect or clean up the working tree at /tmp/ruby-build.20210820192225.1661.dl.. 2021. 8. 20.
Programmers / 정렬 - 가장 큰 수 programmers.co.kr/learn/courses/30/lessons/42746 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr 여기서 핵심은 정렬 식을 어떻게 구성할 것인지였다. 사실 Arrays.sort()에서 람다식을 이용해 풀 수도 있지만 문제가 '정렬' 카테고리에 들어가기 때문에 직접 merge sort를 짜보았다. [내가 짠 코드] // mergesort를 직접 구현해서 짰다 import java.util.*; class Sol.. 2021. 4. 18.
Programmers / 정렬 - K번째 수 programmers.co.kr/learn/courses/30/lessons/42748 코딩테스트 연습 - K번째수 [1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3] programmers.co.kr 나는 그냥 단순하게 생각해서 짰다. [내가 짠 코드] import java.util.Arrays; class Solution { public int[] solution(int[] array, int[][] commands) { int[] answer = new int[commands.length]; for(int i = 0; i < commands.length; i++){ int start = commands[i][0]-1; int end =.. 2021. 4. 17.
Programmers / Hash - 완주하지 못한 선수 programmers.co.kr/learn/courses/30/lessons/42576 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr [참고한 코드] // 다른 사람의 풀이 import java.util.HashMap; class Solution { public String solution(String[] participant, String[] completion) { String answer = ""; HashMap hm = new HashMap(); for (String player .. 2021. 4. 6.
프로그래밍 대회에서 배우는 알고리즘 문제 해결 전략 by 구종만 프로그래밍 대회에서 배우는 알고리즘 문제 해결 전략 by 구종만 2. 문제 해결 전략 [문제 해결 과정] 문제 해결 과정에는 정답이 딱히 정해져 있지는 않지만 일반적으로 많이 쓰이는 순서를 적어보자면 다음과 같다. 1. 문제를 제대로 읽고 이해하기 -> 문제를 읽고 이해한다 2. 문제 재정의 & 추상화하기 -> 문제를 익숙한 용어로 재정의한다 3. 계획 세우기 -> 어떻게 해결할지 계획을 세운다 4. 계획 검증하기 -> 계획을 검증한다 5. 계획 수행하기 -> 프로그램으로 구현한다. 6. 회고하기 -> 어떻게 풀었는지 돌아보고, 개선할 방법이 있는지 찾아본다. 1번같은 경우는 나도 중요하게 생각하는 부분이다. 정말 문제를 빨리 풀려고 조급하게 다가가다보면 오히려 제대로 문제를 풀지 못할 경우가 생긴다. .. 2020. 10. 25.