분류 전체보기 133

백준 2896 Java

문제 땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다. 달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다. 달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B 3 - 2 = 1 2일차: 1 + 3 -> 4 - 2 = 2 3일차: 2 + 3 -> 5 - 2 = 3 4일차: 3 + 3 -> 6 정상도달 4일차에는 정상에 도달하여 2를 빼주지 않아도 되는 상황이 왔는데 총 길이에서 미끄러지는 길이만큼 빼준다면 하루 오르는 총 길이 즉, (A - B)를 이용하여 정상에 도달하기까지..

Java HashSet, Stream, for문을 통한 중복제거 방법

자바를 배워가며 중복제거를 꽤나 여러번 했었는데 중복제거할때의 프로그램의 성능과 그 방법들에 대해서는 자세히 정리해본적이 없는것 같다. 그래서 이참에 중복제거를 하는 여러 방법들과 성능을 측정해보았다. 꽤나 많은 양의 데이터 중복제거를 할때에 속도를 측정해보기위해 List에 많은 양의 과일을 담아주었다 무려 100000000개의 과일이다.... 내 생각에는 많은양 같으나 실제로는 적은양일지도 모르겠다. (코린이라 이부분은 잘 모르겠다 실무에 나가면 실제로 얼마나 많은양의 데이터를 처리하는지에 대해서는...) 시간측정은 currentTimeMillis()를 이용하여 진행하였다. 방법1 : 해쉬셋(HashSet)을 이용한 중복제거 Set은 중복을 허용하지 않는 객체이므로 List에 있는것을 Set에 다시 담..

공부/Java 복습 2021.09.28

백준 1193 Java

문제 무한히 큰 배열에 다음과 같이 분수들이 적혀있다. 1/1 1/2 1/3 1/4 1/5 … 2/1 2/2 2/3 2/4 … … 3/1 3/2 3/3 … … … 4/1 4/2 … … … … 5/1 … … … … … … … … … … … 이와 같이 나열된 분수들을 1/1 → 1/2 → 2/1 → 3/1 → 2/2 → … 과 같은 지그재그 순서로 차례대로 1번, 2번, 3번, 4번, 5번, … 분수라고 하자. X가 주어졌을 때, X번째 분수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다. 출력 첫째 줄에 분수를 출력한다. 이 문제에는 몇가지 규칙이 있다 규칙 1: (분자 + 분모) - 1 = 현재 분자와 분모가 존재하는 라인의 번째수 이자 현재 라인에 존..

Java 문자열을 뒤집는 4가지 방법 + 시간효율

문자열을 4가지 방법을 이용하여 뒤집어보세요. 문자열을 뒤집는 4가지 방법을 누군가 물어봤다... 뭔가 쉽게 뒤집겠네 라고 생각했지만 당장 떠오른 방법은 빌더를 이용한 방법과 charAt을 이용한 방법만이 머리에 떠올랐다 그래서 뭔가 재미있겠다 싶어 공부해보았고 어느 방법이 가장 속도가 빠른지도 궁금하여 체크해 보았다. (프로그램의 시간 성능을 측정하는 방법은 간단한 내용이지만 따로 다루도록하겠다.) 시간을 구하는 방법은 System.currentTimeMillis();를 사용하면 밀리초 단위로 시간을 구해지는데 이 방법으로는 코드가 너무 짧아 시간이 구해지지않아 더 자세한 시간을 구하기 위해 nanoTime() 메서드를 이용하여 구하였다. 첫 번째 방법은 charAt()을 이용한 방법이다. for문을 ..

공부/Java 복습 2021.09.26

Java ConvertedSecond

초를 입력받으면 년/일/시간/분/초로 변환하여 출력해보세요 ※ 단, 필요없는 단위는 출력하지 말 것 ex: 0년 0일 13시간 0분 5초인 경우 -> 13시간 0분 5초만 나와야 함 1. 스캐너를 이용하여 유저에게 초를 입력받는다. 2. seconds배열을 만들어 그 안에는 년,일,시,분 을 구할 수 있는 계산식을 넣어두고 seconds 배열에 담긴 식들을 유저가 입력한 숫자와 나누고 나누어진 값을 converted에 담아준다. second %= seconds[i] 를 해주는 이유는 예를들어 분을 구할때에 한시간은 3600초로 이루어져있는데 5000이라는 값이 들어왔을때에 5000/60 을 하게되면 정확한 분의 값을 구할수 없게되기 때문이다. 그렇기 때문에 한번 계산식의 계산이 끝날때마다 허용범위 이상의..

공부/Java 복습 2021.09.25

Java checkWord

사용자로부터 단어를 하나 입력받고 첫 번째 글자가 영어이면서 마지막 번째 글자와 일치하면 OK"를 출력하고 일치하지 않으면 "NOT OK"를 출력해보세요 대문자 소문자 같은것 허용하기. 1. 사용자에게 단어를 입력받을때에 대문자 소문자를 동일시 하기위해 toLowerCase()를 이용해 소문자로 변환한다. 2. first에는 문장의 첫번째 단어를 charAt()을 이용해 char형으로 담아준디 3. last도 first와 마찬가지로 담아주는데 단어를 0번부터 체크하기때문에 -1을 해줘야한다 4. 삼항문을 이용하여 check는 first와 last가 같다면 ok 아니라면 not ok를 담아주고 출력하여준다.

공부/Java 복습 2021.09.24

Java DiscountDay

어떤 옷가게에서 할인 행사를 짝수번째 목요일마다 진행한다고 한다. 년도를 입력하면 해당 년도의 모든 할인 날짜를 출력해주는 프로그램을 만들어보세요. [printEventOfYear()] 해당년도의 짝수번째 목요일을 파악하여 총 이벤트 일수를 출력하여주는 메소드 1. SimpleDateFormat을 이용하여 날짜의 원하는 출력 형태를 정해준다 2. while문을 통하여 짝수번쨰 목요일이 몇번 나오는지 체크하여주는데 while문의 반복 조건은 사용자가 입력한 년도와 이벤트에 해당하는 년도가 같을때까지인데 이벤트에 해당하는 년도는 반복문이 돌때마다 일수에 7일씩 더해주기 때문에 2020년을 입력받았다면 2021년이 되는순간 while문이 정지되는 것이다. 3. if문을 통하여 짝수번째 목요일을 찾아준다. 첫번..

공부/Java 복습 2021.09.23

RentalPage 2.TopPanel constructor

1.생성자는 GridBagLayout으로 구성되어있다. 2.처음 테이블에 들어갈 초기값은 initTableBookList() 메서드로 이중배열 데이터값을 받고 columnNames배열을 통해 컬럼네임값을 받는다.(initTableBookList() 은 이전 글에 포스팅되어있다) 3. DefaultTableModel의 객체인 model을 생성하여 책의 데이터 값과 컬럼값을 넣어준다 public boolean isCellEditable( , ) return false; 를 해줄시 테이블에 수정이 불가능한 상태가 된다. DefaultTableModel을 사용하는 이유는 JTable로 바로 데이터를 넣으면 테이블과 직접 연결한 상태가 되기때문에 한번 만든 테이블의 값을 변경할 수 없기떄문이다. 4. 모델의 값을..

RentalPage 1.TopPanel

대여페이지는 보고싶은 책을 선택하여 대여하는 기능들이 있다. (광고 페이지와 마찬가지로 데이터베이스 서버가 닫혀 현재 사진을 찍을수 없음으로 예전에 찍었던 사진또는 ppt사진으로 대신하겠다) 현재 보이는 것이 대여페이지이며 버튼을 눌렀을때의 엑션과 주요 기능들을 먼저 소개하겠다 1. 메인버튼: 메인으로 이동할 수 있는 버튼이다. 2. 카테고리/검색: 사용자가 선택한 카테고리의 내용으로 책 검색이 가능하다. 3. Jtable 테이블: 총 4개의 페이지로 구성이 되어있으며 끝까지 이동후에는 5,6,7,8번 페이지로 이동이 가능하다 버튼은 숫자버튼을 눌러서도 이동이 가능하며 >버튼을 눌러서도 이동이 가능하다 4. Jtable 테이블: 사용자가 더블클릭하여 선택한 책을 아래 테이블로 이동시키며 윗 테이블에서는 ..

5DiceGame 자바

랜덤으로 5개의 주사위를 굴린 다음에 주사위의 결과를 통해 다음을 구분하는 클래스를 만들어보세요 1. 풀하우스 (같은 눈이 2개 + 3개) (11666/22333/55252) 2. 스몰 스트레이트 (1234/2345/3456) 3. 라지 스트레이트 (12345/23456) 4. 4 다이스 (같은 숫자 4개) 5. 5 다이스 (같은 숫자 5개) final static int MAX_DICE_NUM 과 DICE_SIZE는 다이스에 가장 큰 숫자가 6인것과 5개의 주사위를 굴리는것은 변하지 않기때문에 final로 선언하였다. [생성자] 생성자에는 배열의 인덱스값과 랜덤 메서드를 선언해준다. [roll()] 메서드 랜덤 숫자 5개를 dices배열에 넣어준다. [printDice()] 메서드 roll() 메서드에..

공부/Java 복습 2021.09.12
728x90