[프로그래머스] 서버 증설 횟수 -java
·
CodingTest/programmers
문제 설명 당신은 온라인 게임을 운영하고 있습니다. 같은 시간대에 게임을 이용하는 사람이 m명 늘어날 때마다 서버 1대가 추가로 필요합니다. 어느 시간대의 이용자가 m명 미만이라면, 서버 증설이 필요하지 않습니다. 어느 시간대의 이용자가 n x m명 이상 (n + 1) x m명 미만이라면 최소 n대의 증설된 서버가 운영 중이어야 합니다. 한 번 증설한 서버는 k시간 동안 운영하고 그 이후에는 반납합니다. 예를 들어, k = 5 일 때 10시에 증설한 서버는 10 ~ 15시에만 운영됩니다. 하루 동안 모든 게임 이용자가 게임을 하기 위해 서버를 최소 몇 번 증설해야 하는지 알고 싶습니다. 같은 시간대에 서버를 x대 증설했다면 해당 시간대의 증설 횟수는 x회입니다. 모든 게임 이용자를 감당하기 위해 최소 7..
[JAVA] 컬렉션 프레임워크 (Java Collection Framework:JCF) 간단하게 알아보기
·
Language/JAVA
JCF, Jaca Collection Framework자바는 데이터를 저장하는 자료구조와 활용하는 알고리즘을 구조화하여 사용자에게 제공한다. 자료구조가 정의된 인터페이스와 구현하는 클래스로 구분되어 있다. c언어에서 스택을 구현하기 위해서는 직접 push, pop, peek을 만들어야 한다. 하지만 자바를 이용하면 Stack 클래스의 객체를 선언해 push, pop, peek을 가져와 사용할 수 있다.이렇게 제공되는 프레임워크를 JCF라고 한다.    컬렉션 프레임워크 사용의 장점컬렉션 프레임워크는 인터페이스와 다형성을 이용한 객체 지향적 설계를 통해 표준화되어 있다. 자바에서 직접 제공하는 것이기 때문에 안정적으로 사용할 수 있으며 알고리즘을 고성능으로 구현할 수 있다. 재사용이 높고, 사용이 편리하다..
[JAVA] 예외 처리(Exception Handling) 하는 이유와 방법 알아보기
·
Language/JAVA
오류 Error & 예외 Exception프로그래밍을 하다가 오류가 발생했을 때, 회복이 가능한가를 기준으로 오류와 예외로 나눈다.오류 Error일반적으로 회복이 불가능한 문제환경적인 이유로 발생발생하는 경우 회복이 불가능하며 어떤 에러로 종료됐는지 확인할 수 있다.예외 Exception회복이 가능한 문제발생할 수 있는 문제에 대해 대응하는 예외 처리가 가능   예외 종류확인된 예외 Checked Exception컴파일 시점에 확인하는 예외로 특정 문제를 인지하고, 정의해두어서 확인이 가능하다.checked exception은 예외 처리를 하지 않으면 compile error가 발생한다.compile error - 프로그래밍 언어 규칙을 지키지 않았을 때 발생하는 에러, 문법에 맞게 작성미확인된 예외 U..
[자바] 자바 가상 머신, JVM(Java Virtual Machine) 자세히 이해하기
·
Language/JAVA
VM (Virtual Machine) 이란?프로그램 실행을 위해 물리적 머신과 유사한 소프트웨어를 가상 머신이라고 한다. 소프트웨어로 구성된 하드웨어(머신)을 의미한다. 1960년대 중반 처음 개발되어 메인 프레임의 중요한 부분으로 자리 잡았다. 가상 머신을 사용하는 이유는 다음과 같다.격리와 보안 중요도 증가표준 운영체제 보안성과 신뢰성 실패클라우드 컴퓨팅과 같이 많은 사용자가 한 컴퓨터를 공유   JAVA Virtual MachineVM은 프로그램 실행을 위한 소프트웨어 가상 머신, 자바 가상 머신은 자바 실행을 위한 가상 머신으로 생각하면 된다.자바의 실행을 위해서 사용하는 JVM은 어떤 방식으로 동작될까? 먼저 자바는 운영체제에 종속적이지 않다는 사실을 알아야 한다. 자바를 설명할 때 "한번 동작..
[자바/JAVA] 자바로 그래프(Graph) 직접 구현해보기 -인접 행렬, 인접 리스트
·
Language/JAVA
rvrlo - [자료구조] 그래프(Graph)자바를 이용해서 그래프를 직접 구현해보려고 한다.그래프에 대한 설명은 위 링크에서 확인할 수 있다. 이 글에서는 설명 없이 코드로 구현한 과정만 적는다.    인접 행렬로 무향 그래프 구현하기무방향 그래프를 구현할 것이기 때문에 입력받은 정점은 뒤바꿔서 서로 연결을 다시 해줘야 한다.방향 그래프로 구현한다면, [ from → to ]만 연결해줘도 된다.  사용하는 메서드 - add, getPrint public static void add(int from, int to){ graph[from-1][to-1] = 1; graph[to-1][from-1] = 1; } public static String getPrint(){ ..
[자바/JAVA] HashSet을 사용해서 정렬이 되는 이유 찾아보기
·
Language/JAVA
HashSetHashSet은 인터페이스 Set을 구현할 때 사용하며 HashMap 인스턴스로 Set 자료구조 형식을 나타낸다.Set은 비선형 자료구조로 순서가 보장되지 않고, 중복이 허용되지 않는 특징이 있다.HashSet말고도 TreeSet, LinkedHashSet, SortedSet과 같은 방식을 사용하기도 한다.  순서가 보장되지 않는 Set의 성질자바 컬렉션은 Set을 기본으로 제공한다. Set을 구현하는 방법은 여러가지가 있지만, 각자 성질이 조금씩 다르다. SortedSet과 이를 상속받은 TreeSet은 오름차순으로 정렬이 되고, HashSet을 상속받은 LinkedHashSet은 저장된 순서에 따라서 해시테이블에 저장된다.순서 없이 나오는 Set을 보기 위해 HashSet을 통해서 동작을..
[JAVA] 깊은 복사와 얕은 복사 코드로 직접 확인하기 -python과 비교
·
Language/JAVA
얕은 복사대입 연산자를 통해 복사하는 방법으로 새로운 메모리에 같은 값이 복사되는 것이 아닌, 같은 메모리를 공유하는 주소값을 복사하는 것을 얕은 복사라고 한다. 이 경우 같은 메모리를 공유하고 있기 때문에 복사한 두번째 변수 값을 변경하면 처음 변수 값도 같이 변경된다. 깊은 복사새로운 메모리를 만들어 똑같이 생성하는 것으로 보기에는 같지만, 서로 다른 메모리를 가지고 있다.실제 값을 하나씩 꺼내서 복사하거나, 메서드를 이용해 복사하는 방법이 있다.  깊은 복사와 얕은 복사는 말 그대로 얼마나 깊이있게 복사할 수 있는지를 말한다. 이 경우 설명보다 코드를 통해서 변화하는 모습과 주소값을 직접 확인하는게 제일 이해하기 좋았다.    코드로 확인 ArrayList a = new ArrayList(Array..
[Spring] 싱글톤 레지스트리(Singleton Registry)란?
·
Framework/Spring
싱글톤 패턴일반적으로 객체를 여러번 생성하면 그 객체가 가지고 있는 정보는 같지만, 객체 자체는 모두 다른 객체이다.완전히 같은 오브젝트는 동일하다고 하고, 동일한 정보를 가지고 있는 건 동등하다고 한다.하지만 스프링에서는 여러번 빈을 요청해도 매번 동일한 오브젝트를 돌려준다.이는 스프링이 싱글톤을 적용하고 있기 때문이다.2024.12.06 - [Knowledge/디자인패턴] - [디자인 패턴] 싱글톤 패턴(Singleton Pattern) 싱글톤은 이와 같이 유일한 인스턴스를 사용해 메모리를 절약하고, 이미 생성된 인스턴스에 접근해 속도가 빠르다는 장점이 있다. 하지만 싱글톤의 사용은 위 글에서처럼 장점보다 큰 단점을 가지고 있다. private로 생성되어 객체 지향의 특징인 다형성 적용이 불가능하고,..
[토비의스프링] 1.5 스프링의 IoC
·
Framework/Spring
스프링의 핵심스프링의 핵심은 빈 팩토리, 애플리케이션 컨텍스트 라고 불리는 것에서 담당한다. 빈 Bean스프링이 제어권을 가지고 직접 만들고, 관계를 부여하는 오브젝트오브젝트 단위의 애플리케이션 컴포넌트스프링 컨테이너가 생성과 관계 설정, 사용 등을 제어하는 제어의 역전이 적용된 오브젝트 빈 팩토리와 애플리케이션 컨텍스트빈 팩토리빈의 생성과 관계 설정 같은 제어 담당 IoC오브젝트. 보통 빈 팩토리보다 애플리케이션 컨텍스트를 주로 사용한다.애플리케이션 컨텍스트IoC방식을 따라 만들어진 빈 팩토리. 빈 생성, 관계 설정 등 제어 작업 총괄빈 팩토리는 빈을 생성하고 관계를 설정하는 IoC기본 기능을 가지고 있다면, 애플리케이션 컨텍스트는 이 빈 팩토리의 확장형으로, 빈 팩토리의 모든 기능을 포함하여 추가 기..