본문 바로가기

전체 카테고리361

[알고리즘] 프로그래머스 - 주식가격 1. 문제 설명 초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 입출력 예 설명 1초 시점의 ₩1은 끝까지 가격이 떨어지지 않았습니다. 2초 시점의 ₩2은 끝까지 가격이 떨어지지 않았습니다. 3초 시점의 ₩3은 1초뒤에 가격이 떨어집니다. 따라서 1초간 가격이 떨어지지 않은 것으로 봅니다. 4초 시점의 ₩2은 1초간 가격이 떨어지지 않았습니다. 5초 시점의 ₩3은 0초간 가격이 떨어지지 않았습니다. 2. 나의 풀이 문제 풀이 시간 : 17분 import java.util.ArrayList; class Solution { public int[] solution(int[] prices.. 2020. 4. 1.
[Java] 제네릭(Generic) 1. 제네릭이란? 자바(Java)에서 제네릭(Generic)은 클래스 내부에서 사용하는 데이터의 타입(Type)을 클래스의 인스턴스를 생성할 때 결정하는 것을 의미합니다. 객체의 타입을 컴파일 시점에 체크하기 때문에 타입 안정성을 높이고 형 변환의 번거로움을 줄일 수 있습니다. 즉, 서로 다른 Type 정의에 복수의 Class를 정의하는것보다 제네릭을 통해 Class를 인스턴화할 때 인자와 함께 Type을 넘겨줌으로써 하나의 Class로 복수의 Type을 처리 할 수 있습니다. 아래 간략하게 제네릭(Generic)을 사용하여 선언된 클래스와 객체를 선언한 부분을 살펴보겠습니다. public class TestGeneric { public T sample; public void showYourType() .. 2020. 3. 31.
[알고리즘] 프로그래머스 - 가운데 글자 가져오기 오늘 풀어본 문제는 프로그래머스의 가운데 글자 가져오기입니다. 1. 문제 단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다. 2. 나의 코드 class Solution { public String solution(String s) { int len = s.length(); String answer = ""; if(isEven(len)){ int start = s.length()/2 -1; answer = s.substring(start, start+2); } else{ int start = s.length()/2; answer = s.substring(start, start+1); } return answer; } publi.. 2020. 3. 30.
[알고리즘] 프로그래머스 - K번째수 오늘 풀어본 문제는 프로그래머스의 K번째 수 입니다. 정렬을 이용하는 문제였습니다. 1.문제 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다. 예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면 array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다. 1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다. 2에서 나온 배열의 3번째 숫자는 5입니다. 배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return 하도록 solution.. 2020. 3. 30.
객체지향프로그래밍(OOP) 설계 원칙 SOLID 1. 단일 책임 원칙 (SRP, Single Responsibility Principle) 객체는 단 하나의 책임만 가져야 합니다. 객체에 책임을 할당할 때는 어떤 객체보다도 작업을 잘 할 수 있는 객체에 책임을 할당해야합니다. 그렇다면 설계원칙을 학습해야하는 이유는 무엇일까요? 바로 예측하지 못한 변경사항이 발생하더라도 유연하고 확장성이 있도록 시스템 구조를 설계하기 위해서입니다. 좋은 설계란 새로운 요구사항이 생겼을 때 가능한 영향을 받는 부분을 줄이도록 하는 것입니다. 즉, 객체가 변해야 하는 이유는 1가지 이어야합니다. 책임을 많이 질수록 클래스 내부에서 서로 다른 역할을 수행하는 코드끼리 강하게 결합될 가능성이 높아집니다. * 산탄총 수술 하나의 책임이 여러 개의 클래스들로 분산되어 있는 경우에.. 2020. 3. 30.
[알고리즘] 프로그래머스 - 완주하지 못한 선수 오늘 풀어 본 문제는 프로그래머스의 완주하지 못한 선수 입니다. "해시(Hash)"를 이용해서 푸는 문제였습니다. 1. 문제 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요. 2. 나의 코드 import java.util.HashMap; class Solution { public String solution(String[] participant, String[] completion) { String answer = ""; .. 2020. 3. 26.