본문 바로가기
728x90
반응형

전체 글407

[Programmers] 블록 이동하기 문제 2020 KAKAO BLIND RECRUITMENT > 블록 이동하기 코딩테스트 연습 - 블록 이동하기 [[0, 0, 0, 1, 1],[0, 0, 0, 1, 0],[0, 1, 0, 1, 1],[1, 1, 0, 0, 1],[0, 0, 0, 0, 0]] 7 programmers.co.kr 아이디어 이번 문제는 평범한 BFS로 길 찾는 문제들의 심화 버전이라고 생각합니다. 로봇이 차지하는 공간이 2칸이어도 사방탐색을 하는 데는 어려움이 없었지만 회전하는 경우를 구할 때 말썽을 많이 부렸습니다. 초기 코드가 구현되었을 때는 회전하는 부분이 복잡하고 길었지만 구현하고 나서 생각을 다시 정리해보니 회전하는 경우를 판단할 때 매우 간단한 코드로 변경할 수 있었습니다. 생각한 방법에 대해 간단하게 설명드리겠습니다.. 2021. 3. 20.
[Programmers] 자물쇠와 열쇠 문제 2020 KAKAO BLIND RECRUITMENT > 자물쇠와 열쇠 코딩테스트 연습 - 자물쇠와 열쇠 [[0, 0, 0], [1, 0, 0], [0, 1, 1]] [[1, 1, 1], [1, 1, 0], [1, 0, 1]] true programmers.co.kr 아이디어 이번 문제는 처음 접했을 땐 풀지 못하고 시간이 흘러 다시 접했을 때 풀게 된 문제였습니다. 풀이 방법은 단순히 회전을 하며 자물쇠를 열 수 있는 모든 경우를 찾는 완전탐색을 하면 되었습니다. 자물쇠는 고정 시키고 열쇠를 좌측 상단부터 우측 하단까지 옮기며 자물쇠를 열 수 있는지를 확인해주면 됩니다. 마치 2차원 배열을 탐색하는 것처럼요. 그림으로 나타내면 이런 모습이 나오겠습니다. 구현 코드 (Java) class Soluti.. 2021. 3. 19.
[Programmers] 괄호 변환 문제 2020 KAKAO BLIND RECRUITMENT > 괄호 변환 코딩테스트 연습 - 괄호 변환 카카오에 신입 개발자로 입사한 "콘"은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 programmers.co.kr 아이디어 이 문제의 아이디어는 문제에서 제공해주고 있습니다. 문제에서 설명하는 상황에 맞게 코드를 구현하기만 하면 끝인 문제입니다. 굳이 하나를 선택해보자면 재귀 함수를 이용해야 된다고 말할 수 있을 것 같습니다. 구현 코드 (JavaScript) const solve = (val) => { if(val.length === 0) { return ''; } let count = 0; // '('.. 2021. 3. 18.
[Programmers] 문자열 압축 문제 2020 KAKAO BLIND RECRUITMENT > 문자열 압축 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문 programmers.co.kr 아이디어 이 문제는 문제를 푼 사람이 많은 것처럼 큰 아이디어를 요구하지 않았습니다. 문자열을 모두 동일한 길이로 잘라낸 뒤 잘라진 문자열 중 동일한 문자열이 있다면 개수를 세어 그에 걸맞은 새로운 문자열을 만들어주기만 하면 됩니다. 다음과 같은 절차를 통해 코드를 작성하면 됩니다. 1. 자를 문자열 길이 탐색 (1~s문자열의 길이/2) 2. 길이만큼 잘라낸 문자열을 모두 탐색하여 .. 2021. 3. 17.
[JPA] Composite-id class must implement Serializable 에러 안녕하세요. J4J입니다. JPA를 테스트하던 도중 새로운 Entity를 추가했더니 "Composite-id class must implement Serializable" 에러가 저를 반겼습니다. 해결방법은 간단했습니다. Entity에 Serializable을 추가했더니 정상 가동되었습니다. package com.spring.jpaTest.dto; import java.io.Serializable; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConst.. 2021. 3. 17.
[Spring] MyBatis ↔ Repository를 연결하는 다양한 방법들 안녕하세요. J4J입니다. 이번 포스팅은 MyBatis ↔ Repository를 연결하는 다양한 방법들에 대해 적어보는 시간을 가져보려고 합니다. 이 포스팅에서도 보실 수 있듯이 저는 DB 연결을 위해 MyBatis와 Repository를 연결할 때 interface, interface를 구현한 class, mapper를 모두 생성하곤 했습니다. 하지만 최근 interface와 mapper만으로 MyBatis와 Repository를 연결할 수 있는 방법을 알게 되었는데 사용하던 방법보다 더 효율적이라고 느껴지고 지식을 얻은 김에 알고 있는 방법들을 정리하는 포스팅을 하고자 글을 적게 되었습니다. 알고 있는 방법이 2개밖에 없지만 이 2개보다도 더 효율적인 방법을 알게된다면 추후 포스팅을 해보도록 하겠습니.. 2021. 3. 16.
[Java] URL을 이용한 파일 업로드 안녕하세요. J4J입니다. 이번 포스팅은 URL을 이용한 파일 업로드에 대해 적어보는 시간을 가져보려고 합니다. 이전에 2021.03.08 - [IT/Java] - [Java] URL을 이용한 이미지 업로드라는 포스팅을 작성한 적이 있는데 이번에 포스팅될 내용은 이미지뿐만 아니라 pptx, jar, txt 등의 다른 파일들도 업로드를 할 수 있습니다. 다른 말로는 이미지 업로드 방식의 상위 버전(?)일 수도 있겠습니다. 적용 방법 업로드 할 타겟 파일을 만들기 위해 텍스트 파일 하나를 첨부해보겠습니다. 위의 파일을 다운로드하는 URL은 https://blog.kakaocdn.net/dn/bhK3bF/btqZ3fko0Nb/GXa1NlyVQzNhT4GYZDeoL1/uploadTestFile.txt?attac.. 2021. 3. 15.
[Programmers] 보행자 천국 문제 2017 카카오코드 예선 > 보행자 천국 코딩테스트 연습 - 보행자 천국 3 3 [[0, 0, 0], [0, 0, 0], [0, 0, 0]] 6 3 6 [[0, 2, 0, 0, 0, 2], [0, 0, 2, 0, 1, 0], [1, 0, 0, 2, 2, 0]] 2 programmers.co.kr 아이디어 이번 문제는 DFS/BFS를 이용하여 풀어야 되는 것처럼 보이지만 DP를 이용하여 풀어야만 하는 문제입니다. DP를 활용하는 방법은 간단합니다. city_map배열을 순회하면서 현재 위치에서 다음 위치(오른쪽, 아래)를 이동하는 경우를 생각하거나 또는 이전 위치(왼쪽, 위)에서 현재 위치로 오게 하는 경우를 생각하면 됩니다. 저 같은 경우는 현재 위치에서 다음 위치로 이동하는 경우를 활용하여 풀었습.. 2021. 3. 14.
[Programmers] 단체사진 찍기 문제 2017 카카오코드 본선 > 단체사진 찍기 코딩테스트 연습 - 단체사진 찍기 단체사진 찍기 가을을 맞아 카카오프렌즈는 단체로 소풍을 떠났다. 즐거운 시간을 보내고 마지막에 단체사진을 찍기 위해 카메라 앞에 일렬로 나란히 섰다. 그런데 각자가 원하는 배치가 모두 programmers.co.kr 아이디어 이번 문제는 여러가지 아이디어 없이 순열이라는 키워드만 가지고 풀 수 있는 문제였습니다. 카카오프렌즈들의 총 인원수는 8명이었기 때문에 순열을 이용해도 문제가 없었고 순열을 통해 배열된 값을 가지고 data의 조건에 맞는지 체크만 해주면 풀 수 있는 문제입니다. 아이디어를 정리하면 다음과 같습니다. 1. 카카오프렌즈들을 이용한 순열 구하기 2. data의 조건에 맞는지 확인 구현 코드 (Java) cl.. 2021. 3. 13.
[Programmers] 외벽 점검 문제 2020 KAKAO BLIND RECRUITMENT > 외벽 점검 코딩테스트 연습 - 외벽 점검 레스토랑을 운영하고 있는 "스카피"는 레스토랑 내부가 너무 낡아 친구들과 함께 직접 리모델링 하기로 했습니다. 레스토랑이 있는 곳은 스노우타운으로 매우 추운 지역이어서 내부 공사를 하 programmers.co.kr 아이디어 이 문제를 풀기 위해 가장 중요하게 생각해야 될 것은 스카피의 친구들인 dist들의 배치 방식입니다. 처음 문제를 접했을 땐 그리디, 동적프로그래밍을 이용해야 되나? 라고 생각했지만 결국엔 순열로 dist들을 배치하여 풀었습니다. dist의 길이는 1이상 8이하이기 때문에 dist들의 순열을 구해도 문제될 것은 없었고 외벽을 점검할 dist의 순서, 탐색 시작 weak, 탐색 방향을.. 2021. 3. 12.
[Programmers] 순위 검색 문제 2021 KAKAO BLIND RECRUITMENT > 순위 검색 2021. 3. 11.
[Programmers] 합승 택시 요금 문제 2021 KAKAO BLIND RECRUITMENT > 합승 택시 요금 코딩테스트 연습 - 합승 택시 요금 6 4 6 2 [[4, 1, 10], [3, 5, 24], [5, 6, 2], [3, 1, 41], [5, 1, 24], [4, 6, 50], [2, 4, 66], [2, 3, 22], [1, 6, 25]] 82 7 3 4 1 [[5, 7, 9], [4, 6, 4], [3, 6, 1], [3, 2, 3], [2, 1, 6]] 14 6 4 5 6 [[2,6,6], [6,3,7], [4,6,7], [6,5,11], [2,5,12], [5,3,20], [2,4 programmers.co.kr 아이디어 이 문제는 문제를 보자마자 플로이드-워셜을 이용해야겠다는 생각이 났던 문제입니다. 왜냐하면 무지와 .. 2021. 3. 10.
[Java] Jsoup을 이용한 html 파싱 안녕하세요. J4J입니다. 이번 포스팅은 Jsoup을 이용한 html 파싱에 대해 적어보는 시간을 가져보려고 합니다. 파싱이란? 파싱은 한글로 뜻풀이를 해보면 구문 분석이라는 뜻으로 문장을 이루고 있는 구성 성분을 분해하여 구조화하는 것을 의미합니다. 이게 무슨 말이냐? 간단하게 말하면 화면을 만들기 위해 사용되는 html태그 및 정보들을 가져와 새로운 구조를 만든다고 생각하면 됩니다. 그리고 자바에서 html 파싱을 할 수 있도록 도와주는 라이브러리가 Jsoup입니다. html을 파싱하는 이유에는 사람들마다 다른 이유들이 존재하겠지만 저 같은 경우는 보통 웹 페이지에 있는 데이터를 가져와 여러 가지 테스트를 하고 싶을 때 사용합니다. 하지만 웹 페이지에 있는 데이터를 가져올 때 조심해야 될 점은 가져와.. 2021. 3. 9.
[Java] URL을 이용한 이미지 업로드 안녕하세요. J4J입니다. 이번 포스팅은 URL을 이용한 이미지 업로드에 대해 적어보는 시간을 가져보려고 합니다. 만약 본인의 파일을 선택하여 서버에 업로드하는 방법에 대해 알고 싶으시면 다음 포스팅을 참고하시면 됩니다. - 2021/03/04 - [IT/Spring] - [Spring] 파일 업로드 - MultipartFile(With. React) - 2021/03/05 - [IT/Spring] - [Spring] 파일 업로드 - MultipartRequest(With. React) 적용 방법 업로드를 할 타겟 이미지를 만들기 위해 임의로 사진 파일을 등록해보겠습니다. 등록한 위의 이미지의 경로는 https://blog.kakaocdn.net/dn/VIxFi/btqZqqf3QFS/n2otuLtHQo8.. 2021. 3. 8.
[Programmers] 카드 짝 맞추기 문제 2021 KAKAO BLIND RECRUITMENT > 카드 짝 맞추기 코딩테스트 연습 - 카드 짝 맞추기 [[1,0,0,3],[2,0,0,0],[0,0,0,2],[3,0,1,0]] 1 0 14 [[3,0,0,2],[0,0,1,0],[0,1,0,0],[2,0,0,3]] 0 1 16 programmers.co.kr 아이디어 해당 문제를 처음 접했을 때 어떻게 풀지 막막했었습니다. 여러 생각을 하던 도중 아이디어가 생각나지 않아 질문하기 메뉴를 통해 아이디어를 찾다가 순열을 이용하신 분이 있는 것을 보고 어떻게 풀어내야 할지 아이디어가 생각난 문제였습니다. 코드는 짧지 않지만 풀이법은 생각보다 간단했습니다. 탐색할 카드들을 순열을 통해 순서를 정하고 키 조작 횟수를 최소화하며 순서대로 카드를 찾아 가기.. 2021. 3. 7.
[Programmers] 메뉴 리뉴얼 문제 [프로그래머스] 2021 KAKAO BLIND RECRUITMENT > 메뉴 리뉴얼 코딩테스트 연습 - 메뉴 리뉴얼 레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서 programmers.co.kr 아이디어 이 문제는 손님들이 주문한 단품 메뉴들의 조합을 어떻게 세부적으로 나눠서 몇 번 주문했는지를 확인하는지가 핵심이라고 생각합니다. 가장 먼저 생각난 방법은 조합입니다. orders 배열의 각 원소의 길이가 n이라고 했을 때 1부터 n개까지 택하는 모든 조합을 구하는 것을 생각했습니다. 조합을 이용해도 문제없이 문제를 풀 수 있다고 생각했지만 1부터 n개까지 모든 조합에.. 2021. 3. 6.
[Spring] 파일 업로드 - MultipartRequest(With. React) 안녕하세요. J4J입니다. 이번 포스팅은 MultipartRequest를 이용한 파일 업로드에 대해 적어보는 시간을 가져보려고 합니다. 이전 포스팅에서 MultipartFile을 이용한 파일 업로드에 대해 다뤘었는데 개인적으로 MultipartFile이 유동적으로 적용하기가 더 편리하게 느껴지고 또한 자세히 알아본 것은 아니지만 MultipartFile이 더 최신 기능인 것 같습니다. 한 마디로, 새롭게 파일 업로드 기능을 구현하고자 한다면 MultipartFile 사용을 추천합니다. 그럼에도 불구하고 MultipartRequest에 대해 포스팅을 하는 이유는 오래 지속되어온 시스템들엔 MultipartRequest를 사용하고 있을 수도 있기 때문에 추가적인 작업을 진행하시는 분들에게 도움이 되고자 작성.. 2021. 3. 5.
[Spring] 파일 업로드 - MultipartFile(With. React) 안녕하세요. J4J입니다. 이번 포스팅은 MultipartFile을 이용한 파일 업로드 방법에 대해 적어보는 시간을 가져보려고 합니다. 적용 방법 ※ 스프링과 관련된 코드는 모두 STS-3.9.12.RELEASE 버전을 기준으로 작성되었습니다. [ 1. pom.xml에 dependency 추가 ] commons-fileupload commons-fileupload 1.4 com.fasterxml.jackson.core jackson-databind 2.9.8 [ 2. servlet-context에 multipartResolver 추가 ] [ 2-1. xml에 설정할 경우 ] ... [ 2-2. Java에 설정 할 경우 ] package com.spring.multipartFile.config; impor.. 2021. 3. 4.
728x90
반응형