코드 훔쳐보는 변태 코더
춤 좋아하는 백엔드 개발자(였으면 좋겠다)
Til (22)
22-12-29 TIL

오늘 진행한 것들 🤔

  • 알고리즘 풀데이
 

백준 11726번 2xn 타일링 (자바) 풀이

시간 제한메모리 제한제출정답맞힌 사람정답 비율 1 초 256 MB 128307 48836 36026 35.916% 문제 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2

codinghentai.tistory.com

 

 

백준 9095번 1,2,3 더하기 (자바) 풀이

시간 제한메모리 제한제출정답맞힌 사람정답 비율 1 초 (추가 시간 없음) 512 MB 91254 59805 40667 63.913% 문제 정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 7가지가 있다. 합을 나타낼 때는 수를 1개 이

codinghentai.tistory.com

 

 

백준 2156번 포도주 시식 (자바) 풀이

시간 제한메모리 제한제출정답맞힌 사람정답 비율 2 초 128 MB 111806 38034 27406 32.620% 문제 효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬

codinghentai.tistory.com

 

 

백준 2579번 계단오르기 (자바) 풀이

시간 제한메모리 제한제출정답맞힌 사람정답 비율 1 초 128 MB 140615 47946 34657 33.776% 문제 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각

codinghentai.tistory.com

 

 

백준 11727번 2xn 타일링 2 (자바) 풀이

문제 2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×17 직사각형을 채운 한가지 예이다. 입력 첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000)

codinghentai.tistory.com

등 몇문제

 

오늘의 배운 점 🤔

  • 오늘은 알게모르게 알고리즘 문제가 풀고싶어서 풀데이로 진행해보았습니다.
  • 동적계획법과 분할정복을 활용해 문제풀이를 진행했습니다.
  • 오늘의 수확은 그래도 어제보다 동적계획법을 활용하는법을 익힌것 같다는 것입니다.
    • 동적계획법 문제는 대부분 일정한 패턴으로 반복되는 문제가 많았습니다. 
    • 단순히 하루이틀전까지만 해도 문제를 계속 쳐다봐도 이해가 되지 않았는데 오늘은 풀이를 안보고 제출한 문제도 있어서 뿌듯했습니다.
    • 하지만 안풀린 문제들도 많았습니다. 제출까지 했으나 정리조차도 이해가 안가서 올리지 못한 문제들이 존재합니다.
    • 확실히 풀데이는 잘풀릴때는 괜찮지만 안풀리는 문제가 생기기 시작하면 그떄부터 멘탈이 흔들리는것 같습니다.
    • 내일부터는 절대 이렇게 하지 않고 두문제 이상 풀이하지 않으리라.. 다짐을 하게 됐습니다

 

목표를 지키지 않으니 세우지 않겠습니다.. 🫠

'TIL' 카테고리의 다른 글

23-01-04 TIL  (0) 2023.01.05
23-01-02 TIL  (0) 2023.01.02
22-12-28 TIL  (0) 2022.12.28
22-12-26 TIL  (0) 2022.12.26
22-12-22 TIL  (0) 2022.12.22
  Comments,     Trackbacks
22-12-28 TIL

오늘 진행한 것들 🤔

  • 컴퓨터 구조 정리
 

컴퓨터 시스템의 기본 구성과 정보의 표현과 저장

컴퓨터 시스템의 기본 구성 하드웨어 물리적인 실체가 있는 장비, 부품 시스템 소프트웨어 OS를 포함하는 부트로더, 장치드라이버, 쉘 같은 것들을 얘기함 응용 소프트웨어 애플리케이션 하드웨

codinghentai.tistory.com

 

 

컴퓨터 시스템을 구성하는 방법과 동작 원리

컴퓨터 시스템을 구성하는 방법과 동작 원리 시스템 버스 → 통신하기 위한 경로를 버스라고 통하는데, CPU와 메모리간의 통신, CPU와 IO간의 통신은 모두 시스템 버스를 이용하게 된다. 컨트롤 버

codinghentai.tistory.com

  • 토이프로젝트 리팩토링
  • 동적계획법 알고리즘 문제 풀이
 

백준 1003번 피보나치 함수 (자바) 풀이

시간 제한메모리 제한제출정답맞힌 사람정답 비율 0.25 초 (추가 시간 없음) 128 MB 176402 51239 40178 31.870% 문제 다음 소스는 N번째 피보나치 수를 구하는 C++ 함수이다. int fibonacci(int n) { if (n == 0) { print

codinghentai.tistory.com

 

 

백준 1463번 1로 만들기 (자바) 풀이

문제 정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이다. X가 3으로 나누어 떨어지면, 3으로 나눈다. X가 2로 나누어 떨어지면, 2로 나눈다. 1을 뺀다. 정수 N이 주어졌을 때, 위와 같은 연산

codinghentai.tistory.com

오늘의 배운 점 🤔

  • 컴퓨터구조를 정리했습니다.
    • 하드웨어, 소프트웨어, 응용소프트웨어 이렇게 크게 3구조로 나누는것을 알게 되었습니다.
    • 하드웨어는 말그대로 부품, 소프트웨어는 하드웨어에 의존적인 운영체제 따위를 구동하기 위한 로우레벨 언어로 이루어진 프로그램, 응용 소프트웨어는 흔히 아는 프로그램 같은 것이라고 할 수 있는것 같습니다.
    • 단순히 하드웨어가 한부품 부품이 단독적으로 동작하는게 아닌 시스템 버스를 통해서 이런저런 데이터가 오가는것을 알게 되었습니다.
    • 살짝 MVC 패턴과 비슷하다고 생각했습니다. 단방향 통신을 하는 주소공간 버스와, 양방향통신을 하는 데이터, 컨트롤버스가 모델 뷰 컨트롤러 사이의 요청응답과 비슷하다고 느꼈습니다.
    • 단순히 키보드 키 하나를 눌렀을때에도 상태레지스터, 데이터 레지스터를 확인해서 입력이 된다고 하니, 어느정도 머릿속으로 구조가 그려지는 기분입니다.
    • 폰노이만 구조에 대해서 살짝 공부했습니다.
    • 폰노이만 구조와 하버드 구조의 차이점에 대해서도 살짝 공부하게 되었습니다.
    • 하지만 아직 한번 본것으로는 이해가 안되니 다시 공부해봐야겠습니다.
  • 동적 계획법 알고리즘을 활용하여 문제를 풀이했습니다.
    • 풀이를 하다보니 느낀점은 분할정복은 쪼갤 수 없는 부분을 브레이크 포인트로 정한다면, 동적 계획법은 브레이크 포인트를 정하는 대신에 값을 기억해둬 반복 호출을 멈추는..? 그런 정도로 이해가 되었습니다.
    • 관건은 결과값을 얻으려고 풀이를 하는것이 아닌 문제에서 요구하는 답을 구하기 위한 풀이로 사용된다는 점이었습니다.
    • 일반적으로 배열을 사용하는것 같습니다.
    • 다시 글로 정리하면서 생각해보니 이해가 됩니다. 동적 계획법 같은 경우에는 문제의 규칙성을 찾는것  또한 중요한것 같습니다.
  • 토이프로젝트 리팩토링을 하였습니다.
    • 기존에 내 댓글이 아닐때 수정이나 삭제버튼이 등장했던 부분에 대해서 단순 if문을 추가하여 비활성화를 시켰습니다.
    • 그리고 게시글과 댓글 삭제에 대한 고민이 생겼었습니다. 데이터를 백업하고 삭제를 하는것이 일반적일지, 단순히 비활성화를 하듯이 삭제 컬럼을 온오프 하는게 맞는것일지에 대한 고민을 해보았습니다.
    • 전자를 redis 로 구현했다가 레디스는 인메모리 데이터베이스라는것이 떠올라 죄다 삭제해버렸습니다.
      • 만료기한을 1년으로 잡고 레디스에 백업 후 삭제하는 로직을 구현했는데, 메모리에 1년동안 저장이라니.. 끔찍한 방법이었습니다.

 

내일 목표 🤔

  • 동적계획법 문제 2문제 이상 풀이
  • 가능하면 토이프로젝트 설계하기
  • 컴퓨터 구조 정리

 

'TIL' 카테고리의 다른 글

23-01-02 TIL  (0) 2023.01.02
22-12-29 TIL  (0) 2022.12.29
22-12-26 TIL  (0) 2022.12.26
22-12-22 TIL  (0) 2022.12.22
22-12-21 TIL  (0) 2022.12.21
  Comments,     Trackbacks
22-12-26 TIL

오늘 진행한 것들 🤔

  • 동적계획법 / 분할정복 정리 (분할정복 응용한 병합정렬,퀵정렬 정리)
 

다이나믹 프로그래밍 / 분할정복 (을 활용한 병합정렬/퀵정렬)

동적 계획법 / 분할 정복 동적 계획법 (다이내믹 프로그래밍) 입력 크기가 작은 부분 문제들을 해결한 후 메모이제이션 기법을 사용해서 (미리 결괏값을 저장하여) 문제를 푸는 것 상향직 접근법

codinghentai.tistory.com

  • 분할정복/재귀용법 알고리즘 풀이
 

백준 2447번 별 찍기 - 10 (자바) 풀이

시간 제한메모리 제한제출정답맞힌 사람정답 비율 1 초 256 MB 59667 32112 24013 53.832% 문제 재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각

codinghentai.tistory.com

 

백준 17829번 222-풀링 (자바) 풀이

시간 제한메모리 제한제출정답맞힌 사람정답 비율 1 초 256 MB 2019 1447 1157 74.501% 문제 조기 졸업을 꿈꾸는 종욱이는 요즘 핫한 딥러닝을 공부하던 중, 이미지 처리에 흔히 쓰이는 합성곱 신경망(Con

codinghentai.tistory.com

 

백준 1992번 쿼드트리 (자바) 풀이

시간 제한메모리 제한제출정답맞힌 사람정답 비율 2 초 128 MB 35339 21993 17231 61.423% 문제 흑백 영상을 압축하여 표현하는 데이터 구조로 쿼드 트리(Quad Tree)라는 방법이 있다. 흰 점을 나타내는 0과

codinghentai.tistory.com

 

백준 1780번 종이의 개수 (자바) 풀이

시간 제한메모리 제한제출정답맞힌 사람정답 비율 2 초 256 MB 34215 20278 15221 58.515% 문제 N×N크기의 행렬로 표현되는 종이가 있다. 종이의 각 칸에는 -1, 0, 1 중 하나가 저장되어 있다. 우리는 이 행

codinghentai.tistory.com

 

백준 2630번 색종이 만들기 (자바) 풀이

시간 제한메모리 제한제출정답맞힌 사람정답 비율 1 초 128 MB 28779 19535 15790 68.832% 문제 아래 과 같이 여러 개의 정사각형칸들로 이루어진 정사각형 모양의 종이가 주어져 있고, 각 정사각형들은

codinghentai.tistory.com

  • 테스트코드 노하우 정리
 

내가 기억하기 쉬우라고 작성한 단위테스트

단위테스트는 어떻게 진행될까? 사람마다 다를 수 있으나 (?) 기본적으론 gwt (given & when & then)으로 진행된다. Given ⇒ 어떠한 상황이 주어진다. When ⇒ 어떠한 행동을 한다면 Then ⇒ 어떠한 행동이

codinghentai.tistory.com

  • 실시간 강의 데이터베이스 수강
    • 각종 실습문제 풀이 (join 과 서브쿼리 활용)

오늘의 배운 점 🤔

  • 다이나믹 프로그래밍과 분할정복에 대해서 배웠습니다.
    • 오늘은 뭔가 분할정복 문제를 풀이해보고 싶어서 알고리즘을 5문제나 풀었습니다.
    • 모든 문제를 완벽하게 혼자 힘으로 풀이하지 못했습니다.
      • 재귀용법과 분할정복을 배운지 얼마 되지도 않았는데 어떻게 저 혼자 풀죠? 귀신같이 구현법을 모르겠을때 풀이를 참고했습니다.
      • 하지만 기본적인 로직은 제가 생각했던것과 거의 비슷했었습니다.
      • 처음부터 잘하길 바라면 안되겠습니다. 오히려 오늘같이 풀이하는게 더 이해가 잘되는것 같았습니다.
      • 알고리즘으로 문제를 잘 푸느냐도 중요하지만, 결국 코딩테스트를 준비하는 과정이기때문에 실제로 해당 알고리즘을 실무에서 써먹을 수 있으려면 이해도가 높아야한다고 생각하는데, 급하게 하면 안되겠다는 생각이 들었습니다.
    • 보통 분할정복 문제에서 막혔던 부분은 재귀호출을 어느 부분에서 해야할지가 가장 헷갈렸던것 같습니다.
      • 보통은 쪼개는 부분에서 호출하고, 브레이크 포인트는 더이상 쪼갤 수 없는 부분에서 걸어주면 되는걸 느꼈습니다.
      • 알고리즘 문제도 한마디 한마디 문장을 이해하듯이 풀이하면 더 쉽게 다가오는것 같습니다.
  • 데이터베이스 실습문제들을 풀었습니다.
    • 실시간 강의에서 저번주에 배웠던 join 에 이어서 subquery 를 이용하여 원하는 데이터를 가져올 수 있도록 실습문제들을 풀이하였습니다.
      • 보통 어려워지기 시작하는 부분은 테이블들이 복잡하게 얽히기 시작할때 입니다. 조인에 대한 순서보다는 원하는 데이터를 어떻게 조인해야지 한번의 쿼리실행으로 가져올 수 있을지가 관건이었던거 같습니다.
      • inner join 과 outer join 에 대한 차이를 직전 강의때 정리했었는데, 오늘 문제가 등장했었습니다.
        • 바로 두 테이블을 조인했을때, 값이 null인 로우의 갯수를 가져오는 문제였는데, right 조인을 사용하여 풀이하라고 되어있길래 right outer join 으로 조인해 where 로 가져오도록 했더니 쉽게 풀렸습니다.
      • 대체적으로 서브쿼리를 사용해 가져오는것보단 join을 사용해 가져오는것이 머리로도 잘 그려지고 이해가 잘되는것 같습니다.
      • 단순히 각각 겹치는 컬럼을 inner join 으로 조인 후 원하는 조건에 대한 데이터를 가져오는 문제들이 많았습니다.
        • join문에 대한 반복적인 쿼리문 작성은 코파일럿이 도와주긴 했지만, 해당 로직에 대한 구현은 제 머리로 했으나, 강사님께서 어려운 문제라고 극찬을 해주셨습니다.. 기분이 좋았습니다 :D

 

내일 목표 🤔

  • 동적계획법 알고리즘 문제 풀이
  • 새 토이프로젝트 설계
  • 실시간 강의 컴퓨터구조 수강
  • 그룹스터디 인사이트 공유 후 정리

'TIL' 카테고리의 다른 글

22-12-29 TIL  (0) 2022.12.29
22-12-28 TIL  (0) 2022.12.28
22-12-22 TIL  (0) 2022.12.22
22-12-21 TIL  (0) 2022.12.21
22-12-20 TIL  (0) 2022.12.20
  Comments,     Trackbacks
22-12-21 TIL

어제의 목표 🤔

  • 알고리즘 정렬/ 공간복잡도 정리하기 ⭕️
  • 자료구조 실버 상위문제 2문제 이상 풀이하기 ❌
    • 두문제 풀려고 했지만 시간 초과로 한문제 풀이 후 패스
  • 이펙티브 자바 반 챕터 읽고 정리하기 / JPA 한 챕터 읽고 정리하기 (챕터 야바위)  
    • 시간부족
  • 게시판 프로젝트 리팩토링 마무리 / 테스트 코드 작성 하고 끝내기 ❗️
    • 리팩토링 마무리 후 비즈니스 로직 테스트 코드 작성 완료
  • 실시간 강의 JSP 학습

 

  •  

 

오늘 진행한 것들 🤔

  • 공간 복잡도 정리
 

공간복잡도 ..?

공간복잡도 → 얼마나 많은 저장 공간이 필요할까 ? 좋은 알고리즘은 실행 시간도 짧고, 저장 공간도 적게 쓴다. 시간 복잡도와 공간 복잡도를 둘다 적게 가져가기는 어렵다. 시간과 공간은 반비

codinghentai.tistory.com

  • 기본 정렬 알고리즘 정리
 

기본 정렬 알고리즘 (버블 정렬, 선택 정렬, 삽입 정렬)

알고리즘의 시작은 다양한 정렬 알고리즘을 공부하는 것부터 시작이 된다. 알고리즘을 연습할땐 유명한 알고리즘을 따라 해보면서 알고리즘을 이해하고 스스로 만들어봐야 한다. 알고리즘 연

codinghentai.tistory.com

  • 스택 자료구조 문제 풀이
 

백준 4949번 균형잡힌 세상 (자바) 풀이

시간 제한메모리 제한제출정답맞힌 사람정답 비율 1 초 128 MB 79705 26474 20818 32.368% 문제 세계는 균형이 잘 잡혀있어야 한다. 양과 음, 빛과 어둠 그리고 왼쪽 괄호와 오른쪽 괄호처럼 말이다. 정민

codinghentai.tistory.com

  • 다른 문제는 풀이 중 부족하다고 생각/ 시간초과로 인하여 패스 (흠..)
  • JSP
  • 테스트코드 작성 , 리팩토링 마무리

오늘의 배운 점 🤔

  • 기본 정렬 알고리즘에 대해서 공부했습니다.
    • 버블정렬, 선택정렬, 삽입정렬에 대해서 공부했습니다.
      • 결론적으론 선택정렬/삽입정렬 중에서 골라서 사용하면 될것 같으나, 크기가 클때면 선택정렬 아니라면 삽입정렬을 이용하면 될 것 같습니다.
  • 공간 복잡도에 대해서 공부했습니다.
    • 전에는 공간복잡도까지 신경을 썼지만 이제는 성능이 좋아져 시간복잡도에 더 신경을 쓴다고 합니다.
      • 가변공간과 고정공간인지에 따라서 공간복잡도가 결정됩니다.
      • 고정공간이라면 O(1) 가변공간이라면 O(n) 이라고 생각하면 될것같습니다.
  • 알고리즘 문제를 풀었습니다.
    • 저는 스택 자료구조에 대한 이해도가 충분하지 못한것같습니다.
      • 문자열과 엮인 스택 문제들은 뭔가 어렵게 다가옵니다..
      • 오늘도 두문제를 풀다가 시간이 너무 오래 걸려서 패스하게되었습니다.
      • 다시 공부를 해봐야할것 같습니다.
  • 서비스 계층 테스트 코드 작성
    • Mockito 에 대해서 사용만 해봤지 배워본적이 없는데 오늘 원리를 거의 완벽하게 이해하게 되었습니다.
    • 기존에 given 이 무슨역할인지 전혀 몰랐는데.. 비즈니스 로직 안에 dao 객체가 메소드를 호출할때 리턴값을 mock 객체로 반환하게 해줄 수 있었습니다.
      • 따라서 해당 서비스 클래스 내에서 호출되는 dao객체의 메소드 호출에대한 결과를 맘대로 가정할 수 있습니다.
      • 예외도 발생시킬 수 있고, 멤버변수를 완벽히 입력하지 않고 객체를 전달해도 테스트가 가능합니다.
      • 지금까지는 리팩토링을 하고 직접 뷰단에서 하나하나 다 테스트를 진행했는데.. 이제는 테스트코드만 동작시키면 됩니다.
      • 이래서 테스트코드를 작성하라고 하나 봅니다.
        • 이제 서비스 계층의 테스트코드도 작성이 가능하니 컨트롤러 테스트도 가능해진것 같습니다.
        • 마찬가지로 given 메소드를 이용해 맘대로 상황을 가정할 수 있습니다.
        • 정말 많이 배워간것 같습니다. TDD도 이제 문제없지 않을까요?

내일 목표 🤔

  • 컨트롤러 테스트 코드 작성하기
  • 동적 계획법/분할 정복, 고급 정렬 알고리즘 정리하기
  • 알고리즘 2문제 풀이
  • JPA 책 읽고 정리하기 

 

책을 한권 더 구매해도 될 것 같다.... 흠 

 

내일도 화이팅! 

'TIL' 카테고리의 다른 글

22-12-26 TIL  (0) 2022.12.26
22-12-22 TIL  (0) 2022.12.22
22-12-20 TIL  (0) 2022.12.20
22-12-19 TIL  (0) 2022.12.19
22-12-15 TIL  (0) 2022.12.15
  Comments,     Trackbacks
22-12-20 TIL

어제의 목표 🤔

  • 알고리즘 힙구조/재귀용법 정리하기 ⭕️
    • 기존 실버1수준 까지 풀 수 있던 자료구조 골드 하위 문제 도전해보기  ⭕️ (실버 1문제로 타협)
  • 이펙티브 자바 한 챕터 읽고 정리하기 / JPA 한 챕터 읽고 정리하기 (챕터 야바위) ❌(시간부족)
  • 게시판 프로젝트 리팩토링 마무리 / 테스트 코드 작성 하고 끝내기 ❌(시간부족)
    • 작성한 코드를 왜 그렇게 작성했는지에 대한 이유를 설명할 수 있어야 할 것 같다. 🤔

 

오늘 진행한 것들 🤔

  • 힙 자료구조에 대해서 정리
 

힙 자료구조에 대해서 알아보자 🤔

힙 힙이란 뭘까 ? 🤔 데이터에서 최대값과 최소값을 빠르게 찾기 위해 고안된 완전 이진트리이다. 브랜치가 최대 2개이다. (이진) 노드를 삽입할 때 최하단 왼쪽 노드부터 차례대로 삽입하는 트

codinghentai.tistory.com

 

  • 재귀용법에 대해서 정리
  • 힙 자료구조 알고리즘 1문제, 재귀 알고리즘 1문제 풀이
 

백준 19638번 센티와 마법의 뿅망치 (자바) 풀이

시간 제한메모리 제한제출정답맞힌 사람정답 비율 1 초 1024 MB 1869 625 506 33.488% 문제 센티는 마법 도구들을 지니고 여행을 떠나는 것이 취미인 악당이다. 거인의 나라에 도착한 센티는 자신보다

codinghentai.tistory.com

 

 

백준 17478번 재귀함수가 뭔가요? (자바) 풀이

시간 제한메모리 제한제출정답맞힌 사람정답 비율 1 초 256 MB 38589 15339 12735 38.831% 문제 평소에 질문을 잘 받아주기로 유명한 중앙대학교의 JH 교수님은 학생들로부터 재귀함수가 무엇인지에 대하

codinghentai.tistory.com

 

  • 데이터베이스 실시간 강의
  • 그룹스터디 인사이트 공유

오늘의 배운 점 🤔

  • 힙구조에 대해서 배웠습니다.
    • 이진 탐색 트리와 완전 이진 트리의 차이점에 대해서 알게 되었습니다.
    • 이진 탐색 트리는 말그대로 탐색을 위한 구조이고 완전 이진 트리는 최소/최댓값을 빠르게 찾기위한 구조라고 정리했습니다.
      • 완전 이진트리는 값을 무조건 왼쪽 끝 부터 삽입하고 최소/최대 정렬에 따라 부모 노드와 위치를 계속 바꿔가면서 삽입하고 (윗 노드의 값이 자식 노드의 값보다 크거나 같아야 한다 (최대힙일경우)) , 이진 탐색 트리는 부모 노드보다 값이 크면 오른쪽, 작으면 왼쪽 으로 삽입하는것을 알게 되었습니다.
  • 재귀용법에 대해서 배웠습니다.
    • 따로 정리라고 할것은 재귀 함수에 어떤 부분에 스탑을 넣을 것인지 조건을 잘 정하는게 관건인것 같았습니다.
    • 자료구조부분은 생각보다 어려웠던 부분도 없었고 이미 구현이 되어있는 api 도 많았지만, 재귀나 정렬부터는 제가 직접 머릿속으로 고민해야될 문제가 많은것 같아서 차분차분 풀어나가야 할 것 같습니다.
      • 멘토님께서 어떠한 문제를 잘 풀게 되는건 알고리즘 풀이의 실력이 늘은것이 아닌 해당 문제에 쓰이는 것에 대한 실력이 상승한거라고 하셨는데, 이제 다시 브론즈부터 풀어나가야 할 문제들이 생긴것 같습니다.
  • 알고리즘 문제를 풀었습니다.
    • 재귀 문제는 실버 5로 도전했다가 큰코를 다쳤습니다. 
    • 메소드가 스택에 어떻게 쌓이는지는 이해를 했지만, 직접 풀이를 해보려니 이해가 완전히 되지 않은 느낌입니다.
    • 다시 브론즈부터 풀어봐야겠습니다.
    • 힙 문제는 실버 1문제를 풀이했습니다.
      • 이제 골드문제도 도전해도 되겠다는 생각이 들었습니다. (언제 한번 알고리즘 풀데이를 가져봐야겠습니다.)
  • 데이터베이스 실시간 강의
    • JOIN, GROUP BY, HAVING, ALTER ,인덱스 에 대해서 배웠습니다.
      • GROUP BY 같은 경우에는 말그대로 같은 값을 가진 row 끼리 그룹별로 묶어서 관리할 수 있게 해줍니다.
      • 인덱스 같은 경우에는 정리가 더 필요할 것 같습니다.
        • 보통은 pk로 설정해버리면 pk가 되는 컬럼은 자동으로 인덱스가 생성되나, 그렇지 않은 컬럼들도 따로 인덱스를 생성 할 수 있습니다.
        • 따로 제약조건을 붙여서도 관리가 가능했습니다.
      • JOIN 은 이너조인과 아우터 조인이 있으나 이너조인만 배웠습니다.
        • 이너조인은 단순히 두 테이블간 겹치는 부분만 데이터를 가져와서 퍼즐처럼 붙여준다고 이해했습니다.
        • 따로 찾아보니 아우터조인은 중복이 되지 않는 값까지 다 가져와서 중복이 되지 않은 값들을 null 로 입력후 붙여준다고 합니다.
      • having 은 where 과 비슷하지만, having 은 그룹으로 묶었을때의 로우에만 적용되고 where 은 개별 데이터별로 적용된다는 차이점을 갖고있습니다.
      • alter 는 테이블에 변경사항이 존재할때 수정하는 정도의 문법으로 알고있으면 될 것 같습니다.
  • 그룹 스터디에서 인사이트 공유를 진행했습니다.
    • 호승님은 네트워크, 컴퓨터구조에 대한 짤막한 정보들을 가져와주셨습니다.
      • 메모리? 의 크기가 작을수록 컴퓨터의 성능이 좋아진다.. 라는 내용이 존재했었습니다. 생각해보니 맞는것 같습니다. 장치 하나하나가 굉장히 작아서 같은 면적에 많이 들어가고 감당이 된다면 그게 최고의 성능을 발휘 할 수 있겠다 생각했습니다.
      • 네트워크같은 경우에는 lan과 wan 의 차이에 대해서 설명해주셨습니다. lan은 제한된 구역내의 네트워크, wan은 광범위한 구역의 네트워크 를 뜻한다고 합니다. 흥미롭네요
    • 이안님은 토이프로젝트를 진행하시면서 겪었던 문제에 대해서 공유를 해주셨습니다.
      • 주변에 누군가가 고민을 하는것을 같이 공유한다는것은 좋은것 같습니다.
        • 저도 그 부분에 대해서 한번 더 생각할 수 있게 되어서 좋았습니다.
        • 주변에 동료가 한계단 한계단 올라가는걸 볼때마다 짜릿한 기분이(?) 듭니다.
    • 진혁님께서는 정적 팩토리 메소드에 대해서 공유를 해주셨습니다.
      • 이펙티브 자바로 정리했던 내용인데 책 자체가 어려워서 솔직히 다시봐도 크게 이해되는 부분은 없었습니다.
      • 하지만 또 다시 보게되니 그 이후로 배웠던 무언가와 연관지어서 생각할 수 있게 되었습니다.
        •  이러한 부분에서 보람을 한번 더 느끼게 되는것 같습니다. 꾸준한 학습이 정답인것 같네요.

 

내일 목표 🤔

  • 알고리즘 정렬/ 공간복잡도 정리하기
  • 자료구조 실버 상위문제 2문제 이상 풀이하기
  • 이펙티브 자바 반 챕터 읽고 정리하기 / JPA 한 챕터 읽고 정리하기 (챕터 야바위)
  • 게시판 프로젝트 리팩토링 마무리 / 테스트 코드 작성 하고 끝내기

 

내일도 화이팅! 

'TIL' 카테고리의 다른 글

22-12-26 TIL  (0) 2022.12.26
22-12-22 TIL  (0) 2022.12.22
22-12-21 TIL  (0) 2022.12.21
22-12-19 TIL  (0) 2022.12.19
22-12-15 TIL  (0) 2022.12.15
  Comments,     Trackbacks
22-12-15 TIL

오늘 진행한 것들 🤔

  • 해쉬 자료구조 정리
 

해쉬 자료구조에 대해서 알아보자 🤔

해쉬테이블 🤔 키에 데이터를 맵핑할 수 있는 데이터구조이다. 키와 값을 어떻게 맵핑할까? → 해쉬 펑션에 키를 넣으면 키를 저장할 수 있는 주소를 리턴을 해준다.(인덱스) 해당 주소에 키에

codinghentai.tistory.com

  • 시간 복잡도 정리
 

시간복잡도에 대해서 쉽게 이해해보자 🤔

알고리즘 복잡도 표현 방법 🤔 어떤 문제를 풀이하는데 완벽하게 똑같은 코드는 존재하지 않으나 어떤 풀이가 좋은 풀이냐 ? 라는 기준을 표현하는 방법을 익히는 것이다. → 어느 알고리즘이

codinghentai.tistory.com

  • 해쉬 자료구조 알고리즘 문제 풀이
 

백준 1764번 듣보잡 (자바)풀이

문제 김진영이 듣도 못한 사람의 명단과, 보도 못한 사람의 명단이 주어질 때, 듣도 보도 못한 사람의 명단을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 듣도 못한 사람의 수 N, 보도 못한

codinghentai.tistory.com

 

백준 2910번 빈도 정렬 (자바) 풀이

문제 위대한 해커 창영이는 모든 암호를 깨는 방법을 발견했다. 그 방법은 빈도를 조사하는 것이다. 창영이는 말할 수 없는 방법을 이용해서 현우가 강산이에게 보내는 메시지를 획득했다. 이

codinghentai.tistory.com

  • 스프링 부트 게시판 Article/ArticleComment 도메인 리팩터링
    •  게시글 조회 시에 민감한 정보가 포함되지 않도록 수정 (account dto 제외시킴)

  • Article Service 테스트 코드 작성

  • 그룹스터디 워크숍 준비 (발표자료 수정 및 모의 발표 진행)

 

오늘의 배운 점 🤔

  • 해쉬 자료구조에 대해서 공부했습니다. 왜 프로젝트 강의에서 강사들이 데이터 저장을 위한 자료구조로 해쉬 셋을 사용하는지 알게 되었습니다.
    • 해쉬 맵을 활용하고 싶은 마음이 생겼습니다. 레디스를 연동시켜보면 될까요? 🤔
    • Repository는 어떤 자료구조로 구현되어있는지 궁금해졌습니다. 한번 찾아봐야겠습니다.
  • 시간 복잡도에 대해서 공부했습니다.
    • 사람들이 그렇게 말하던 시간 복잡도가 무엇인지 드디어 알게 되었습니다. 생각보다 어렵지 않았습니다.
    • 시간 복잡도라는 개념을 이해하고 문제를 풀이하니 자연스럽게 해당 코드가 얼마나 오래 걸리지 머릿속으로 그려지게 되었습니다. 🤔
      • 공간 복잡도는 디테일하게 공부하지 못했지만 대충 해쉬 자료구조 같은 것들을 공부하면서 느껴보니 체이닝 기법 같은 오픈 해슁 기법 같은 경우에 메모리 초과가 발생할 수 있겠다..라는 생각이 듭니다. 🤔
  • 테스트 코드를 오랜만에 작성해보았습니다.
    • 전에는 Inject Mock과 Mock 이 무슨 역할인지 몰랐으나 지금은 이해가 됩니다. 제대로 알지 못했지만 꾸준히 테스트 코드를 조금씩이라도 작성해온 보람이 있습니다.
    • 하지만 연관관계 맵핑이 되어있는 엔티티에 대해서 테스트코드를 작성할 때 유연하지 못한 느낌이 듭니다. 해당 서적을 읽어봐야겠습니다.
  • 리팩터링을 진행했습니다.
    • 기존에 문제라고 생각했던 부분이 있었습니다. 프로젝트 내에서 response request dto를 적극적으로 생성하여 사용하지 않고 dto를 통짜로 사용해왔습니다.
      • 해당 부분에 대해서 조회 부분에는 response를, 삽입 부분에는 request를 사용해 확실히 분리를 해뒀습니다.
      • 전체적으로 코드가 더러웠던 부분 중에 공통부분을 빼버리고 핵심 로직은 최대한 코드의 깊이가 깊어지지 않도록 리팩터링을 진행했습니다. 
        • 이제 누구한테 제 프로젝트를 보여줄 수 있겠다 하는 생각이 들었습니다. (물론 작성해야 하는 테스트 코드가 한 무더기입니다. 🤔
  • 그룹스터디 워크숍 발표를 준비했습니다.
    • 자료를 보면서 아직 2달도 안됐지만, 저희 그룹원들이 얼마나 많은 성장을 했는지 , 그리고 저 또한 얼마나 많은 성장을 이뤘는지 다시 한번 짚어보는 시간을 가졌습니다.(물론 제 머릿속으로)
    • 항상 부족하다 생각했는데 되돌아보니 열심히 살아왔고 잘한 거 같아서 좀 쉬어도 되겠다는 생각이 듭니다. 큰일이네요 ;(
    • 모의 발표를 살면서 처음으로 진행해보았습니다. 매번 준비된 거 없이 프리스타일로 춤만 춰오다가 처음으로 가짜 상황극을 해보니 떨렸습니다. 그래도 발표는 잘할 거라 믿습니다. 🤔

 

내일도 파이팅!

'TIL' 카테고리의 다른 글

22-12-26 TIL  (0) 2022.12.26
22-12-22 TIL  (0) 2022.12.22
22-12-21 TIL  (0) 2022.12.21
22-12-20 TIL  (0) 2022.12.20
22-12-19 TIL  (0) 2022.12.19
  Comments,     Trackbacks