자바 50

[백준] 1735번 : 분수 합

문제 분수 A/B는 분자가 A, 분모가 B인 분수를 의미한다. A와 B는 모두 자연수라고 하자. 두 분수의 합 또한 분수로 표현할 수 있다. 두 분수가 주어졌을 때, 그 합을 기약분수의 형태로 구하는 프로그램을 작성하시오. 기약분수란 더 이상 약분되지 않는 분수를 의미한다. 입력 첫째 줄과 둘째 줄에, 각 분수의 분자와 분모를 뜻하는 두 개의 자연수가 순서대로 주어진다. 입력되는 네 자연수는 모두 30,000 이하이다. 출력 첫째 줄에 구하고자 하는 기약분수의 분자와 분모를 뜻하는 두 개의 자연수를 빈 칸을 사이에 두고 순서대로 출력한다. 풀이 수행 순서는 다음과 같다. 1. 주어진 두 분수의 합을 구한다. 2. 분자와 분모의 최대공약수를 구한다. 3. 분자와 분모를 최대공약수로 나눈 후 출력한다. im..

백준 2023.09.07

[백준] 13241 : 최소공배수

문제 정수 B에 0보다 큰 정수인 N을 곱해 정수 A를 만들 수 있다면, A는 B의 배수이다. 예: 10은 5의 배수이다 (5*2 = 10) 10은 10의 배수이다(10*1 = 10) 6은 1의 배수이다(1*6 = 6) 20은 1, 2, 4,5,10,20의 배수이다. 다른 예: 2와 5의 최소공배수는 10이고, 그 이유는 2와 5보다 작은 공배수가 없기 때문이다. 10과 20의 최소공배수는 20이다. 5와 3의 최소공배수는 15이다. 당신은 두 수에 대하여 최소공배수를 구하는 프로그램을 작성 하는 것이 목표이다. 입력 한 줄에 두 정수 A와 B가 공백으로 분리되어 주어진다. 50%의 입력 중 A와 B는 1000(103)보다 작다. 다른 50%의 입력은 1000보다 크고 100000000(108)보다 작다..

백준 2023.09.07

[백준] 1934번 : 최소공배수

문제 두 자연수 A와 B에 대해서, A의 배수이면서 B의 배수인 자연수를 A와 B의 공배수라고 한다. 이런 공배수 중에서 가장 작은 수를 최소공배수라고 한다. 예를 들어, 6과 15의 공배수는 30, 60, 90등이 있으며, 최소 공배수는 30이다. 두 자연수 A와 B가 주어졌을 때, A와 B의 최소공배수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 1,000)가 주어진다. 둘째 줄부터 T개의 줄에 걸쳐서 A와 B가 주어진다. (1 ≤ A, B ≤ 45,000) 출력 첫째 줄부터 T개의 줄에 A와 B의 최소공배수를 입력받은 순서대로 한 줄에 하나씩 출력한다. 풀이 유클리드 호제법으로 최대 공약수를 구하고 첫번째 수와 두번째 수를 곱하고 최대공약수로 나누어 최소공..

백준 2023.09.07

[백준] 10816번 : 숫자 카드 2

문제 숫자 카드는 정수 하나가 적혀져 있는 카드이다. 상근이는 숫자 카드 N개를 가지고 있다. 정수 M개가 주어졌을 때, 이 수가 적혀있는 숫자 카드를 상근이가 몇 개 가지고 있는지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,000,000보다 작거나 같다. 셋째 줄에는 M(1 ≤ M ≤ 500,000)이 주어진다. 넷째 줄에는 상근이가 몇 개 가지고 있는 숫자 카드인지 구해야 할 M개의 정수가 주어지며, 이 수는 공백으로 구분되어져 있다. 이 수도 -10,000,000보다 크거나 같고, 10,0..

백준 2023.09.07

[백준] 1620번 : 나는야 포켓몬 마스터 이다솜 - JAVA

입력 첫째 줄에는 도감에 수록되어 있는 포켓몬의 개수 N이랑 내가 맞춰야 하는 문제의 개수 M이 주어져. N과 M은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수인데, 자연수가 뭔지는 알지? 모르면 물어봐도 괜찮아. 나는 언제든지 질문에 답해줄 준비가 되어있어. 둘째 줄부터 N개의 줄에 포켓몬의 번호가 1번인 포켓몬부터 N번에 해당하는 포켓몬까지 한 줄에 하나씩 입력으로 들어와. 포켓몬의 이름은 모두 영어로만 이루어져있고, 또, 음... 첫 글자만 대문자이고, 나머지 문자는 소문자로만 이루어져 있어. 아참! 일부 포켓몬은 마지막 문자만 대문자일 수도 있어. 포켓몬 이름의 최대 길이는 20, 최소 길이는 2야. 그 다음 줄부터 총 M개의 줄에 내가 맞춰야하는 문제가 입력으로 들어와. 문제가 알..

백준 2023.09.07

[SPRING] EXCEL 업로드하여 데이터 처리하기 #2

이전 글에서 엑셀 데이터에 대한 처리는 끝났다. 이후는 개발자가 원하는대로 데이터를 사용하면 된다. 방장은 Database를 update하는 작업을 수행했고 그에 대한 내용을 작성했다. [SPRING] EXCEL 업로드하여 데이터 처리하기 #1 엑셀 데이터를 파싱하여 Database를 업데이트할 수 있도록 해달라는 요청사항에 따라 개발을 수행하게 되었다. 까먹지 않기 위해 포스팅을 작성해본다. 시나리오 사이트의 장기 미사용자에 대해 many.tistory.com Service ExcelUtil getUpdateMemberList method에서 cell의 값을 가져온 ExcelUtil이다. cell의 타입을 가져와서 switch-case 문을 통해 맞는 type으로 데이터를 변환하여 반환한다. ★ cel..

[SPRING] EXCEL 업로드하여 데이터 처리하기 #1

엑셀 데이터를 파싱하여 Database를 업데이트할 수 있도록 해달라는 요청사항에 따라 개발을 수행하게 되었다. 까먹지 않기 위해 포스팅을 작성해본다. 시나리오 사이트의 장기 미사용자에 대해 문자메시지를 발송 후 발송된 시점으로 Database 업데이트 1. 웹페이지에서 파일을 등록하고 업데이트 버튼을 클릭 2. 서버에서 엑셀 파일 파싱 3. Dabase에 사용자 존재여부 확인 4. 존재한다면 database update 5. update된 사용자 수 페이지로 전달 예제로 아래와 같은 엑셀을 전달받을 경우 처리하는 방법에 대해 작성하겠다. pom.xml 필요한 라이브러리는 아래와 같다. 파일의 type을 체크하여 에러를 발생시키기 위해 apache tika 라이브러리를 추가했다. org.apache.po..

[백준] 14425번:문자열 집합

문제 총 N개의 문자열로 이루어진 집합 S가 주어진다. 입력으로 주어지는 M개의 문자열 중에서 집합 S에 포함되어 있는 것이 총 몇 개인지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 문자열의 개수 N과 M (1 ≤ N ≤ 10,000, 1 ≤ M ≤ 10,000)이 주어진다. 다음 N개의 줄에는 집합 S에 포함되어 있는 문자열들이 주어진다. 다음 M개의 줄에는 검사해야 하는 문자열들이 주어진다. 입력으로 주어지는 문자열은 알파벳 소문자로만 이루어져 있으며, 길이는 500을 넘지 않는다. 집합 S에 같은 문자열이 여러 번 주어지는 경우는 없다. 출력 첫째 줄에 M개의 문자열 중에 총 몇 개가 집합 S에 포함되어 있는지 출력한다. 풀이 처음에는 문자열 집합 S의 문자열 일부와 일치하는 문자열이면 카운트를..

백준 2023.08.17

[백준] 11651:좌표 정렬하기2 - JAVA

문제 2차원 평면 위의 점 N개가 주어진다. 좌표를 y좌표가 증가하는 순으로, y좌표가 같으면 x좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. 출력 첫째 줄부터 N개의 줄에 점을 정렬한 결과를 출력한다. 풀이 Comparator 인터페이스를 활용하여 정렬 compare 메서드 첫 번째 원소가 두 번째 원소보다 클 경우 자리를 변경 [1]배열을 비교, 같을 경우에는 [0]배열의 원소를 비교하여 정렬 import java.io.BufferedR..

백준 2023.08.16

Google SpreadSheet API와 JAVA 연동하기 #2

https://many.tistory.com/11에서 google에 대한 설정을 마쳤다. 이번 글에서는 java에서 코드 작성 후 api 연동까지 수행해보겠다. 방장은 maven spring boot 프로젝트로 라이브러리를 추가하여 개발을 수행하였다. 1. pom.xml 필요한 라이브러리들을 추가했다. com.google.api-client google-api-client 1.25.0 com.google.oauth-client google-oauth-client 1.34.1 com.google.apis google-api-services-sheets v4-rev612-1.25.0 com.google.oauth-client google-oauth-client-java6 1.21.0 com.google.oa..