본문 바로가기

Tech

[프로그래머스] 카카오 블라인드 리크루트 2020 - 외벽 점검 (Java) https://programmers.co.kr/learn/courses/30/lessons/60062 코딩테스트 연습 - 외벽 점검 레스토랑을 운영하고 있는 스카피는 레스토랑 내부가 너무 낡아 친구들과 함께 직접 리모델링 하기로 했습니다. 레스토랑이 있는 곳은 스노우타운으로 매우 추운 지역이어서 내부 공사를 하는 programmers.co.kr 문제 설명 레스토랑을 운영하고 있는 스카피는 레스토랑 내부가 너무 낡아 친구들과 함께 직접 리모델링 하기로 했습니다. 레스토랑이 있는 곳은 스노우타운으로 매우 추운 지역이어서 내부 공사를 하는 도중에 주기적으로 외벽의 상태를 점검해야 할 필요가 있습니다. 레스토랑의 구조는 완전히 동그란 모양이고 외벽의 총 둘레는 n미터이며, 외벽의 몇몇 지점은 추위가 심할 경우 ..
[백준 3197] 백조의 호수 (Java) https://www.acmicpc.net/problem/3197 3197번: 백조의 호수 문제 두 마리의 백조가 호수에서 살고 있었다. 그렇지만 두 마리는 호수를 덮고 있는 빙판으로 만나지 못한다. 호수는 가로로 R, 세로로 C만큼의 직사각형 모양이다. 어떤 칸은 얼음으로 덮여있� www.acmicpc.net 풀이 문제를 처음 보고 다음과 같은 방법으로 시도를 했다. 1. BFS로 얼음을 녹이고 map을 업데이트 시킨다. 2. 해당 map에서 두 백조가 만날 수 있는지 BFS 탐색을 시도한다. 3. 만날 수 없다면 day++를 하고 1, 2번을 반복한다. 4. 만나는 경우에 day를 출력한다. 위 방법으로는 시간 초과가 발생할 수 있다. 예를 들어 백조가 만날 수 있는 날이 n일차라면 (이 n이 아주 ..
[백준 1665] 가운데를 말해요 (Java) https://www.acmicpc.net/problem/1655 1655번: 가운데를 말해요 첫째 줄에는 수빈이가 외치는 정수의 개수 N이 주어진다. N은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수이다. 그 다음 N줄에 걸쳐서 수빈이가 외치는 정수가 차례대로 주어진다. 정수는 -1 www.acmicpc.net 풀이 배열이나 ArrayList를 이용하여 풀이를 시도하였더니 메모리초과, 시간초과 문제가 발생했다. MaxHeap, MinHeap 개념을 이용하여 문제를 풀었다. (Heap은 PriorityQueue로 구현) 입력받는 숫자를 MaxHeap과 MinHeap에 번갈아 가면서 add를 하되, MaxHeap의 첫번째 값과 MinHeap의 첫번째 값을 비교했을 때 (MaxHaep.peek..
[백준 1976] 여행 가자 (Java) https://www.acmicpc.net/problem/1976 1976번: 여행 가자 동혁이는 친구들과 함께 여행을 가려고 한다. 한국에는 도시가 N개 있고 임의의 두 도시 사이에 길이 있을 수도, 없을 수도 있다. 동혁이의 여행 일정이 주어졌을 때, 이 여행 경로가 가능한 것인 www.acmicpc.net 풀이 union-find 알고리즘을 이용해 푸는 문제였다. int[][] map : 입력받은 도시 간 연결을 나타내는 행렬을 담음 int[] route : 여행자의 이동 경로 도시 번호를 담음 int[] join : 도시 간 집합 index를 담음. 집합 원소 중 가장 도시 번호가 작은 번호 기준으로 담김. map을 탐색해 1인 경우의 좌표값 i, j를 기준으로 union()메소드에서 집합을 합친..
객체지향 프로그래밍(Object Oriented Programming) 객체지향 프로그래밍(Object Oriented Programming)이란? 객체지향 프로그래밍, 줄여서 OOP란 컴퓨터 프로그래밍 패러다임 중 하나로, 프로그램에 필요한 데이터를 추상화 시켜 상태와 행위를 가지는 객체를 만들고 그 객체들 간 유기적인 상호과정을 통해 로직을 구성하는 프로그래밍 방법이다. * 객체(Object) : 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신의 속성을 가지고 있고 다른것과 식별 가능한 것. 객체는 속성과 동작으로 구성되어 있다고 보면 되는데 자바에서는 속성은 field, 동작은 method로 구현된다. 객체지향 프로그래밍의 장,단점 장점 1. 재사용성 상속 등을 통해 프로그래밍시 코드의 재사용을 높일 수 있음. 2. 생산성 향상 잘 설계된 클래스를 만들..
[Java] String vs StringBuffer vs StringBuilder Java에서 문자열을 다루기 위해 주로 String, StringBuffer, StringBuilder라는 클래스를 사용하게 된다. 비슷하지만 다른 이 클래스들의 특징과 차이점을 찾아보고 각 클래스들이 어느 상황에 적절하게 사용될 수 있는지 알아보고자 한다. String String 문자열을 다룰 때 가장 일반적으로 사용하는 클래스로 immutable(불변)하다. String 객체를 메모리에 한 번 할당하면 그 공간이 변하지 않다는 뜻이다. String으로 생성된 데이터는 Heap 영역에 할당된다. String str = "ABC"; str += "DEF"위의 예시는 String에 문자열을 추가하는 일반적인 경우로 str는 "ABCDEF"가 된다. 언뜻보면 원래의 문자열에 "DEF"를 추가한 것처럼 보이..
[프로그래머스] 2019 카카오 개발자 겨울 인턴쉽 - 불량 사용자 (Java) https://programmers.co.kr/learn/courses/30/lessons/64064 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 개발팀 내에서 이벤트 개발을 담당하고 있는 무지는 최근 진행된 카카오이모티콘 이벤트에 비정상적인 방법으로 당첨을 시도한 응모자들을 발견하였습니다. 이런 응모자들을 따로 모아 불량 사용자라는 이름으로 목록을 만들어서 당첨 처리 시 제외하도록 이벤트 당첨자 담당자인 프로도 에게 전달하려고 합니다. 이 때 개인정보 보호을 위해 사용자 아이디 중 일부 문자를 '' 문자로 가려서 전달했습니다. 가리고자 하는..
[프로그래머스] 카카오 블라인드 리크루트 2019 - 길 찾기 게임 (Java) https://programmers.co.kr/learn/courses/30/lessons/42892 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 전무로 승진한 라이언은 기분이 너무 좋아 프렌즈를 이끌고 특별 휴가를 가기로 했다. 내친김에 여행 계획까지 구상하던 라이언은 재미있는 게임을 생각해냈고 역시 전무로 승진할만한 인재라고 스스로에게 감탄했다. 라이언이 구상한(그리고 아마도 라이언만 즐거울만한) 게임은, 카카오 프렌즈를 두 팀으로 나누고, 각 팀이 같은 곳을 다른 순서로 방문하도록 해서 먼저 순회를 마친 팀이 승리하는 것이다. 그냥 지도..