전체 글

전체 글

    [프로그래머스] 무지의 먹방 라이브 - JAVA

    [프로그래머스] 무지의 먹방 라이브 - JAVA

    [문제] 2019 KAKAO BLIND RECRUITMENT 문제 프로그래머스 level4 https://programmers.co.kr/learn/courses/30/lessons/42891 코딩테스트 연습 - 무지의 먹방 라이브 programmers.co.kr [풀이] 처음에 문제를 보면 아마 당연하게 k시간만큼 loop문을 돌면서 매초 순회하는 풀이가 떠오를 것이다. 하지만 1초마다 순회하면 효율성에서 떨어진다. 시간을 한번에 벌크하게 계산할 수 있는 방법을 떠올려야 하는 문제다. 핵심 아이디어는 다음과 같다. 예시로 주어진 food_times = [3, 1, 2], k = 5 을 예시로 들어보자. 가로가 음식 순서, 세로가 먹는 시간으로 하여 왼쪽 그림처럼 표현해보자. 한칸씩 숫자를 세며 위로 올..

    IntelliJ 프로젝트 github에 올리기

    IntelliJ 프로젝트 github에 올리기

    1. 자신의 github 계정으로 로그인 하여 접속한다. 2. 오른쪽 상단 프로필 사진 옆에 + 버튼을 클릭하여 "New repository"를 클릭하여 원격 저장소를 먼저 생성한다. 3. 원격 레파지토리 기본 정보들을 설정한다. Repository Name, public/private 여부 등등.. 나는 아래 사진과 같이 설정하였다. 이후 "Create Repository" 버튼을 클릭하여 레파지토리를 생성한다. 4. 레파지토리 생성이 완료되었다. Https 또는 SSH 원격 github 레파지토리 주소를 복사해놓는다. 5. git 원격 저장소에 올릴 IntelliJ 프로젝트를 생성한다. 6. 이제 해당 IntelliJ 프로젝트와 원격 저장소를 연결해준다. git init: 해당 프로젝트를 로컬 저장소..

    [프로그래머스][Level4] 자동완성 - JAVA

    [문제] 2018 KAKAO BLIND RECRUITMENT https://programmers.co.kr/learn/courses/30/lessons/17685 코딩테스트 연습 - [3차] 자동완성 자동완성 포털 다음에서 검색어 자동완성 기능을 넣고 싶은 라이언은 한 번 입력된 문자열을 학습해서 다음 입력 때 활용하고 싶어 졌다. 예를 들어, go 가 한 번 입력되었다면, 다음 사용자는 g programmers.co.kr [풀이] 단어 검색 관련 문제는 Trie 트리 자료구조를 이용하여 풀어야 한다. (단어 검색, 자동 완성 등등 --> 자동으로 "Trie"가 떠올라야함) Trie 구현코드를 처음부터 끝까지 작성하기는 쉽지 않다. 개인적으로 이런 문제를 풀 때는 팀노트나 블로그에 기록해두고 그때 그때 ..

    JAVA 버전별 정리

    JAVA를 주언어로 사용하는 개발자라면 JAVA 버전별 특징에 대해 꾸준히 업데이트 해놓으면 좋을것 같다. ▶ JAVA 7 2011년 7월 7일 발표 try-with-resource 추가 switch문에서 String 사용 가능 (JAVA6에서는 switch문에서 String 사용할 수 없었다니..충격) 타입추론(Type Inference): Diamond Operator 추가 JAVA 7이전에는 선언시에도 제네릭 타입을 명시해야 했지만 JAVA 7부터는 컴파일러가 알아서 추론하게끔 가능해졌다. // JAVA 7 이전 List stringList1 = new ArrayList(); // JAVA 7 - Diamond Operator 추가 List stringList2 = new ArrayList();​ ..

    [프로그래머스][LEVEL2] 캐시 - JAVA

    [문제] 2018 KAKAO BLIND RECRUITMENT 출제 https://programmers.co.kr/learn/courses/30/lessons/17680

    [프로그래머스] [Level2] 프렌즈4블록 - JAVA

    [문제] 프로그래머스 level2 2018 KAKAO BLIND RECRUITMENT 출제 https://programmers.co.kr/learn/courses/30/lessons/17679 코딩테스트 연습 - [1차] 프렌즈4블록 프렌즈4블록 블라인드 공채를 통과한 신입 사원 라이언은 신규 게임 개발 업무를 맡게 되었다. 이번에 출시할 게임 제목은 "프렌즈4블록". 같은 모양의 카카오프렌즈 블록이 2×2 형태로 4개가 붙 programmers.co.kr [풀이] 1. 블록의 처음 칸부터 순회하며 현재 칸을 포함한 2 × 2 영역을 확인한다. 2. 모두 같은 문자이면 4칸 모두 checked=true 표시 3. 모든 블록을 탐색한 후 checked=true로 표시된 곳은 지워준다. 그리고 지워진 영영..

    [백준][Gold2]10473 - 인간 대포 - JAVA

    [문제] https://www.acmicpc.net/problem/10473 10473번: 인간 대포 입력은 한 개의 길찾기 문제를 표현한다. 첫 줄에는 두 개의 실수가 입력되며 각각은 당신이 현재 위치한 X, Y좌표이다. 두 번째 줄에는 목적지의 X, Y좌표가 실수로 입력된다. 이어지는 줄에는 대 www.acmicpc.net [풀이] * 알고리즘 : 다익스트라 알고리즘(https://programmer-chocho.tistory.com/63) 1. 출발지와 도착지가 존재하기 때문에(a -> b) 최단 경로 알고리즘을 응용하는 문제다. 최초에 그래프를 어떻게 만들것이냐가 관건이다. 만들어진 그래프가 있어야 최단 경로를 구한든 말든 할 것이기 때문에;; 2. 최단 경로를 구하는 그래프를 만들려면 가중치가 ..

    최단 경로 알고리즘 - JAVA

    최단 경로 알고리즘 - JAVA

    1. 최단 경로 알고리즘 - 목적지에 이르는 모든 가능한 경로 중 최단 경로를 찾는 알고리즘 - 종류: ①다익스트라 알고리즘 ②벨만-포드 알고리즘 ③모든 쌍 최단 경로 알고리즘 ※ ①② 와 ③의 코딩테스트 제출 차이 - 특정 시작점에서 모든 정점들까지의 최단 경로 구하기 --> 다익스트라, 벨만-포드 - 모든 시작점에서 모든 정점들까지의 최단 경로 구하기 --> 모든 쌍 최단 경로 알고리즘 (대표: 플로이드와샬) ※ 최소 신장 VS 최단 경로 "최소 신장"과 "최단 경로"는 얼핏보면 같은 말 같다. 뭐가 다르길래 굳이 알고리즘을 나누었나 궁금하여 차이점을 간단히 메모해둔다. * 최소 신장 - 모든 정점을 방문하면서 간선의 비용이 합이 최소가 되는 "트리"를 만듦 - ex) 프림 알고리즘, 크루스칼 알고리..

    [백준][Sliver1]1932 - 정수 삼각형 - JAVA

    [백준][Sliver1]1932 - 정수 삼각형 - JAVA

    [문제] https://www.acmicpc.net/problem/1932 1932번: 정수 삼각형 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. www.acmicpc.net [풀이] * 알고리즘: 다이나믹 프로그래밍 다이나믹 프로그래밍을 이용하여 푸는 문제이다. 점화식은 쉽게 세울수 있다. 그런데 인덱스를 이용한 삼각형 배열을 만드는 것이 어려웠다. 어려웠던 이유는 1차원 배열로 삼각형을 만드려했기 때문이었다. 2차원 배열로 삼각형을 만드니 쉽게 다이나믹프로그래밍을 이용하여 문제를 풀 수 있었다. 바텀업 방식으로 풀면되는데 현재 위치에서 위로 왼쪽 대각선, 오른쪽 대각선에 있는 수 중 큰 수를 현재값과 더해주면 된다. 그런데 삼각..