본문 바로가기

분류 전체보기

2022 블라인드 카카오 1차 2차 코딩테스트 후기 9/18, 9/25 카카오 블라인드 1차 2차 코딩 테스트가 있었다. 준비는 프로그래머스에서 카카오 기출 풀면서 일주일 정도 준비했다. 10문제는 푼거같다. 작년에 처음 카카오 코테의 쓴맛을 보고 이번에 다시 도전해봤는데 생각보다 선방이었다. 오전 10시에 라인, 2시부터 카카오 거의 하루 7시간을 코테 보는데 써야했는데 나름 재밌었다. 라인 올솔해서 파이팅 넘치는 상태였어서 그런가.. 4번까지는 자료구조 좀 사용해서 구현으로 밀어붙였다. 4번같은 경우에는 테케 하나가 자꾸 삑나서 뭐때문일까.. 한참 고민했는데 초기값을 0 이 아닌 1로 변경했더니 코너케이스까지 다 맞추게 됐다. 시험 중에 빠르게 분석해본걸로는 내 로직에서 점수 계산 과정이 초기값을 0으로 했을때 놓치는 케이스가 있었다. 5번문제는 트리.. 더보기
자바8의 인터페이스 1. Default 메소드 등장배경 아래의 인터페이스가 있다. public interface StaticAndDefault { void printName(); } 해당 인터페이스를 구현한 구현체 클래스가 1000개 있다고 가정해보자. 만약 해당 인터페이스에 함수가 하나 추가되어야하는 상황이라면? 그리고 추가될 함수는 어떤 구현체든지 동일한 로직이라면? 복붙을 1000번 해야하는 상황이 오게된다. 사용방법 public interface StaticAndDefault { void hello(); default void hi() { System.out.println("hi"); } } default 키워드를 붙인 함수를 인터페이스에 넣어주면 해당 인터페이스의 모든 구현체는 default 키워드가 붙은 함수들을.. 더보기
자바의 함수형 프로그래밍 https://www.inflearn.com/course/the-java-java8/dashboard 더 자바, Java 8 - 인프런 | 강의 자바 8에 추가된 기능들은 자바가 제공하는 API는 물론이고 스프링 같은 제 3의 라이브러리 및 프레임워크에서도 널리 사용되고 있습니다. 이 시대의 자바 개발자라면 반드시 알아야 합니다. 이 www.inflearn.com 강의를 공부하며 생각을 정리한 글입니다. 자바의 함수형 프로그래밍 자바스크립트로 함수형 프로그래밍에 입문해서 그런지 자바로 함수형 프로그래밍을 하는 것이 뭔가 낯설고 신기했다. 자바스크립트는 타입이 없기 때문에 그저 순수함수와 고차함수를 만들어내는 데에만 집중했었다. 하지만 자바에는 타입이 존재한다. 따라서 함수형 프로그래밍을 하려면 어떤 함수.. 더보기
Sass 정리! 타입스크립트로 토이프로젝트를 하기에 앞서서 프로젝트에 Sass를 적용하고자 학습하는 시간을 가졌다. Sass? Sass만의 문법으로 작성된 Style sheet를 css로 변경해주는 변환 엔진 컴파일러이다. Sass 를 쓰는 이유 프로젝트 규모가 커지면 css를 관리하기가 매우 복잡해지는데 Sass를 사용하면 css코드의 중복을 줄이고 유지보수가 용이해진다. Sass의 확장자 .scss .sass 이렇게 두가지가 있다. 둘의 차이는 간단하다. 중괄호와 세미콜론의 유무 Mixins 기능 사용방식이 다르다. 아무래도 나는 중괄호가 있는 css가 익숙하니 scss로 학습해야겠다. 사용하기 npm i install node-sass로 설치해서 사용하는 방법만 알고 있었는데 vscode에서 익스텐션으로 제공해주고.. 더보기
백준 1890 점프 - [dp] import sys input = sys.stdin.readline N = int(input()) arr = [list(map(int, input().split())) for i in range(N)] dp = [[-1 for j in range(N)] for i in range(N)] def dfs(y, x): if y == N-1 and x == N-1 : return 1 if dp[y][x] == -1: dp[y][x] = 0 jump = arr[y][x] if y + jump < N: dp[y][x] += dfs(jump + y, x) if x + jump < N: dp[y][x] += dfs(y, jump + x) return dp[y][x] print(dfs(0,0)) dp를 최대한 활용해서 .. 더보기
SOA & MSA 보호되어 있는 글입니다. 더보기
9월 4주차 계획 보호되어 있는 글입니다. 더보기
백준 17836 - 공주 구출 [bfs] """ 17836 백준 """ from collections import deque H, W, T = map(int, input().split()) arr = [list(map(int, input().split())) for i in range(H)] dirs = [ [0,1], [1,0], [0,-1], [-1,0] ] def bfs(): visited = [[False for i in range(W)] for j in range(H)] visitSword = [[False for i in range(W)] for j in range(H)] q = deque([[0,0,0,0]]) visited[0][0] = True while q: y, x, t, sword = q.popleft() if y == H.. 더보기
타임리프의 템플릿, 레이아웃 https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-2/dashboard 스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 - 인프런 | 강의 웹 애플리케이션 개발에 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. MVC 2편에서는 MVC 1편의 핵심 원리와 구조 위에 실무 웹 개발에 필요한 모든 활용 기술들을 학습할 수 있 www.inflearn.com 강의를 수강하며 공부한 것을 정리한 글입니다. 템플릿과 레이아웃 웹 페이지 상의 공통되는 영역들을 일일이 복붙으로 개발하는 것은 비효율적이다. 중복이 발생하기도 하고 변경사항이 생기면 하나하나 찾아다니며 수정해야하기 때문이다. 타임리프에서는 이를 해결하기 위해 템플릿, 레이아.. 더보기
리액트에서 lottie 적용해보기 Lottie.js 안드로이드 웹 등에서 코드로 애니메이션을 만들 수 있도록 하는 라이브러리이다. 모션 그래픽 효과를 줄 때 gif를 갖다 쓰는게 아니고 코드로 만들 수 있다. (에어비앤비에서 만들었다고 한다..!) 필요 사전 지식 : HTML, CSS, JS, After Effect 시작하기 제대로 하려면 다음과 같이 몇가지를 설치해야한다. 1. 애프터 이펙트 2. ZXP 인스톨러 3. 바디무빈 익스텐션 https://aescripts.com/learn/zxp-installer/ https://github.com/airbnb/lottie-web/tree/master/build/extension 하지만 나는 디자이너가 아니라서 저런 툴은 모르기때문에 패스하고 진행했다. js 와 리액트만 조금 알면 할 수 .. 더보기