분류 전체보기 193

📑 Vue / 템플릿 문법

템플릿 문법Vue는 컴포넌트 객체의 데이터를 렌더링된 DOM(Document Object Model)에 서술적으로 렌더링할 수 있는 HTML기반 템플릿 문법을 사용한다. 내부적으로 Vue는 템플릿을 고도로 최적화된 JavaScript 코드로 컴파일한다. 반응형 시스템과 결합된 Vue는 앱 상태의 변경 사항을 적용할 때, 리렌더링할 필요가 있는 최소한의 컴포넌트를 지능적으로 파악하고 DOM 조작을 최소화한다. 가상 DOM 개념에 익숙하며, javascript의 원시적인 작동법을 선호하는 경우 jsx(JavaScript Syntax eXtension=react문법) 지원옵션을 사용하여 템플릿 대신 렌더링 함수를 직접 작성할 수도 있지만, 템플릿과 동일한 수준의 컴파일 시간 최적화를 기대할 수 없다.텍스트 보..

📑 JPA 연관 관계 순환참조로 인한 직렬화 에러 해결 방법

DBMS에서 각 테이블간의 연관관계를 외래키로 설정하듯이 JPA에서도 두 엔티티 간의 연관관계를 설정해주어야 한다. JPA의 연관관계의 경우 단방향이 아닌 양방향으로 관계를 설정할 수 있는데, 이렇듯 양방향으로 설정된 관계에서 한 엔티티를 조회하는 경우 순환참조 에러가 발생한다. 프로젝트를 진행하던 중 맞이하게 된 순환 참조 예시를 보여주고, 해당 에러를 해결한 방법을 설명하겠다. 가장 처음 기획 의도는 하나의 자산에 최대 3장의 이미지를 등록할 수 있게 하려고 했고, 자산에서는 이미지 리스트를 조회할 수 있도록 하고, 이미지에서는 해당 이미지가 어떤 자산의 이미지인지 확인할 수 있도록 자산 id를 조회할 수 있도록 하고자 했다. 그래서 아래와 같이 두 엔티티의 관계를 자산 : 이미지 = 1 : N으로 ..

📑 코딩테스트 필수 수학 개념

1. 나머지 연산(Modulo Operation)나눗셈의 나머지를 구하는 연산. 표기는 mod로 하고 프로그래밍 언어에서는 대부분 %연산자로 사용한다. 나머지 연산의 경우 아래와 같이 분배법칙이 가능한데 사칙 연산 중 나눗셈 연산을 제외하고 적용된다.(A+B)%C = (A%C + B%C)%C(A-B)%C = (A%C - B%C)%C(A*B)%C = (A%C * B%C)%C더보기/** * 나머지 연산 */public static void modulo() { System.out.println(" 5 % 3 = " + 5 % 3); System.out.println("10 % 3 = " + 10 % 3); System.out.println("10 % 2 = " + 10 % 2); int ..

📑 코딩테스트 필수 자료구조

파이썬 VS 자바 1. 배열 (시간 복잡도) => O(1) 입력값의 크기와 무관하게 일정한 속도, O(c) => 상수 시간만큼의 복잡도언어 구분파이썬자바정의다양한 데이터 타입의 원소들이 순서대로 저장된 선형 자료 구조동일한 데이터 타입의 원소들이 순서대로 저장된 선형 자료 구조 (Primitive / Wrapper)선언list = []int [] arr = new int[]; ArrayList aList = new ArrayList();추가list.append(값) O(1)arr[idx] = 값;aList.add(값); O(n) : 배열이 꽉찬 경우 확장 및 복사삭제list.pop(idx) O(n) list.pop() 맨 뒤의 원소 삭제 O(1)arr[idx] = 0;aList.remove(idx or ..

📑 프로그래머스_가장 큰 정사각형 찾기_Day22

https://school.programmers.co.kr/learn/courses/30/lessons/12905 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 오늘은 프로그래머스 Level2로 분류된 문제를 풀어보았다. 2차원 배열의 크기가 최대 1000 x 1000으로 크지 않아 보이지만, 문제를 보자마자 직감적으로 브루트포스로 풀게 되면 효율성 채점에서 하나 정도는 틀리겠거니 싶었다. 사실 이런 문제가 제일 어렵고 까다로운 것 같다. 정해진 공식이 있는 것도 아니고, 머리를 좀 굴려서 알고리즘을 효율적으로 최적화해야 하기 때문이다. 뭐 이렇게 생각하..

📑 프로그래머스_삼각 달팽이_Day21

오늘은 알고리즘 챌린지 21일 차이다. level2에 분류된 구현 문제를 가져와봤다. https://school.programmers.co.kr/learn/courses/30/lessons/68645 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 최대한 단순하게 풀어보려 했지만, 규칙은 찾기가 어려웠고,,, 구현을 하고자 한다면 n의 크기가 1000으로 크지 않기 때문에 조건만 잘 설정해 주면 된다. 이런 문제는 실제로 삼각 형태의 자료구조를 만들 수 없기 때문에, 구현 가능한 2차원 배열 상태에서 논리적으로 삼각 배열을 구현하는 것이다. 배열에 코드를 ..

📑 프로그래머스_스트림_day20

오늘은 프로그래머스 Level2로 분류된 문제를 풀이하되, 좀 쉬운 문제 3문제를 풀어보았다. 문제 자체는 크게 어렵지 않았고, 겸사겸사 stream을 연습하는 목적으로 풀이해 보았다. Sol 1> https://school.programmers.co.kr/learn/courses/30/lessons/12939 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 첫 번째 문제는 단순하게 최댓값과 최솟값을 구해서 리턴하는 문제이다. 본래라면 Arrays.sort를 사용하거나 배열의 크기를 고려하여 버블 혹은 swap을 사용한 정렬로 구할수도 있는 단순한 문제이다..

📑 프로그래머스_뉴스 클러스터링_day19

https://school.programmers.co.kr/learn/courses/30/lessons/17677 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 오늘은 알고리즘 챌린지 19일 차이다. 오늘도 어제처럼 카카오 블라인드 채용 시험 문제를 가져왔다. 난이도는 중으로 분류되어 적당히 어려웠던 것 같지만, 시간 복잡도를 고려하지 않아도 될 정도로 조건의 범위가 작고, 처음 보는 개념에 대해서도 설명이 상세하게 나와있기 때문에 그대로 코드만 구현할 수 있다면 쉽게 풀 수 있을 것이다. 문제를 풀기 위한 핵심 키포인트는 아래와 같다. 교집합 수와 합집..

📑 프로그래머스_캐시_day18

알고리즘 챌린지 18일 차이다. 오늘은 Level2로 분류된 카카오 블라인드 채용 문제를 가져왔다. 카카오 해설을 보니 난이도가 (하)로 분류되어 있지만 정답률이 약 45%였다고 한다. 이 문제를 풀기 위한 키포인트는 LRU를 구현할 수 있는가와 제약 조건(cacheSize == 0)을 제대로 이해했는가 정도가 될 것이다. https://school.programmers.co.kr/learn/courses/30/lessons/17680 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 주어진 상황 자체는 단순하다. 페이지 교체 알고리즘인 LRU는 캐싱 공간이..

📑 프로그래머스_의상_day17

프로그래머스 알고리즘 챌린지 17일 차이다. 오늘도 level2에 분류된 자료구조 문제를 가져와 보았다. 문제를 읽다보니 분명히 풀었던 문제인 것 같은데, 안 푼문제로 분류되어 있어서 뭐지 하고 풀었다. 문제를 다 풀어보고 나니 취업준비 기간 때 같이 학원 다니던 친구가 질문했던 문제였었다는 게 떠올랐다. 그때 당시에는 생각보다 쉽게 풀이해서 설명해줬었는데 이번엔 그러지 않은 것을 보니 확실히 감이 많이 죽은 것 같다. https://school.programmers.co.kr/learn/courses/30/lessons/42578 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. prog..

📑 프로그래머스_예상 대진표_day16

알고리즘 챌린지 16일 차이다. 지난주에 야근과 퇴근 후 바쁜 일정으로 인하여 1주를 통으로 쭉 밀려버렸다... 밀린 수준이 아니라 챌린지의 존재 자체를 까먹어 버렸다... 3월 새 학기를 시작하는 대학생의 마음으로 다시금 시작해 보자. 오늘은 프로그래머스 level2 중에서 쉬운 문제를 가져왔다. https://school.programmers.co.kr/learn/courses/30/lessons/12985 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제를 읽다 보면 난해해 보이지만 조건자체가 규칙이 있어 간단한 문제이다. 조건부터 차근차근 분석해..

📑 프로그래머스_연속 부분 수열 합의 개수_day15

알고리즘 챌린지 15일 차이다. 오늘은 바로 Level2에 분류된 원형 수열문제를 풀어보겠다. https://school.programmers.co.kr/learn/courses/30/lessons/131701 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 원형 순열의 문제를 푸는 사람들의 경우 보통 순열이 끊기지 않고 반복됨을 표현하기 위해서 배열을 두배로 확장해 이어 붙이는 경우가 있는데, 그럴 필요 없이 배열의 인덱스를 모드 연산으로 사용하면 된다. 쉽게 말해, 길이가 5인 배열{1,2,3,4,5}이 있는데 이 배열을 논리적으로 원형으로 이어져 있다..