2020-11-10 문제 오늘은 NAVER D2 캠퍼스에서 CTP 스터디 하는날!!! 스터디 장소가 인하대학교 강의실에서 NAVER D2 캠퍼스로 바뀌었기 때문에 멀티탭 부장 준호는 스터디 전에 미리 멀티탭을 셋팅 해야 한다. CTP는 모든 사람이 사용할만큼 충분한 멀티탭을 가지고 있다. 종류는 3구부터 8구까지 다양하게 있다. 모든 사람들은 노트북만 가져오기 때문에 멀티탭 1구를 무조건 사용한다. 1구를 초과해선 안 된다. CTP에는 멀티탭에 2개이상 연속으로 코드를 꽂으면 안되는 특별한 규칙이 있다. 준호는 미리 계산을 해서 모두가 코드를 꽂을 수 있게 멀티탭을 K개 챙겨 갔다. 하지만 준호는 수학과에서 수학을 못해 전과했기 때문에 가끔 멀티탭을 적게 가지고 올 때가 있다. 수학을 더 잘하는 여러분이..
2020-11-05 싱글톤(Singleton)이란 전체 프로그램 내에서 하나의 객체만을 만드는 것을 이야기한다. 이는 싱글톤을 선언한 class 이외에 다른 곳에서 new를 이용한 새로운 생성자를 만드는 것을 제한하는 의미라고도 볼 수 있다. 싱글톤을 코드화 하기 위해서는 객체 앞에 private를 붙여 주어 선언된 class에서만 생성 가능하게 만들어 주면 된다. 구체적으로 코드로는 어떻게 선언되는지 알아보자. public class singleton { private static singleton st = new singleton(); private singleton() {} static singleton getSt() { return st; } } 위에는 싱글톤 객체를 생성하는 클래스이며, 아래는 ..
2020-11-01 단어 뜻에서도 알 수 있듯이 Infinity는 무한대라는 의미를 가지고 있고, NaN은 (Not a Number) 숫자가 아니라는 의미를 가지고 있다. 그러면 우선 어떠한 상황에서 이와 같은 결과가 나오게 되는지 알아보자. public class TemplateA { public static void main(String[] args) { double n = 10; System.out.println(n / 0.0); System.out.println(n % 0.0); } } 실수 값을 0 으로 나눈 몫의 값은 무한히 나누어질 수 있어 Colsole 창에 값이 Infinity 가 출력된 것을 확인할 수 있으며, 0으로 나눈 나머지의 값은 존재하지 않을뿐더러 숫자가 아니기 때문에, NaN..
2020-10-30 문제 유진수는 어떤 수를 10진수로 표현한 뒤 그 수를 두 부분으로 나눴을 때, 앞부분 자리수의 곱과 뒷부분 자리수의 곱이 같을 때를 말한다. 예를 들어, 1221은 유진수이다. 12와 21로 나눴을 때, 앞부분 자리수의 곱 1*2는 뒷부분 자리수의 곱 2*1과 같기 때문이다. 1236도 마찬가지로 유진수이다. 하지만, 1234는 아니다. 수를 나눌 때 항상 연속된 자리수를 나눠야하고, 각 부분에 적어도 한자리는 있어야 한다. 예를 들어, 12345는 총 4가지 방법으로 나눌 수 있다. 1-2345, 12-345, 123-45, 1234-5 어떤 수 N이 주어질 때, 이 수가 유진수인지 아닌지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 수 N이 주어진다. 이 수는 2,147,483..
2020-10-29 자바의 나누기 연산자는 모두가 아는 2 가지가 있으며, 하나는 몫을 저장하는 '/' 연산자 나머지를 저장하는 '%'이다. 이는 굉장히 편리하게 활용되는데, 아주 가끔 불편하게 느껴질때도 있는데, 그때가 바로 소수점까지 구해야 하는 경우이다. 지금 부터 그러한 경우의 해결방법을 알아보도록 하자. (지금부터 모든 예는 우측 예제로 들겠다. ex) 10 / 4 = 2.5) 초기 속성타입을 double를 지정한다면, 쉽게 해결된 문제이지만, int / byte / short과 같은 속성 타입을 초기에 지정했다면, 다소 난감할 수 도 있다. (다만 그렇다고 모든 변수를 double로 설정하지는 말자. 이는 int = 4byte 의 크기 이지만 double 은 8byte의 크기이기 때문에 코드양..
2020-09-28 거품 정렬(Bubble sort)은 두 인접한 원소를 검사하여 정렬하는 방법이다. 시간 복잡도가 O(n2)로 상당히 느리지만, 코드가 단순하기 때문에 자주 사용된다. 원소의 이동이 거품이 수면으로 올라오는 듯한 모습을 보이기 때문에 지어진 이름이다. 양방향으로 번갈아 수행하면 칵테일 정렬이 된다. 오름차순으로 정렬하는 거품정렬의 과정은 다음과 같다 출처 : 위키피디아 링크 : ko.wikipedia.org/wiki/%EA%B1%B0%ED%92%88_%EC%A0%95%EB%A0%AC 소스코드 Scanner scan = new Scanner(System.in); int [] arr = new int [10]; //정렬할 숫자가 들어갈 배열 int n = -1; //입력받을 숫자의 개수가 ..