응애개발자
article thumbnail
[Java] 백준 15736번 : 청기 백기
코딩테스트/백준 2024. 5. 14. 10:57

문제https://www.acmicpc.net/problem/15736  접근 방법청기가 위로 백기가 아래로 있을 때 1번학생은 1번 배수의 깃발을 뒤집고, 2번학생은 2번 배수의 깃발을 뒤집고, 3번은 3의 배수를 뒤집는 방식을 진행된다.맨처음에 어떤깃발이 청기고 어떤 깃발이 백기로 되어있는지 알 수 없어서 헷갈렸지만 밑에 힌트에 맨처음에 다 백기에서 시작된다고 나와있어서 보고 참고했다.1부터 24까지 규칙을 찾아보니 1, 4, 9, 16번의 깃발이 백기인것을 확인했다. N학생의 제곱수가 있으면 그것의 약수는 무조건 홀수이므로 답을 구한다. 완탐방식으로 하면 21억개 이므로 시간 초과가 발생한다.import java.io.BufferedReader;import java.io.InputStreamRead..

article thumbnail
[Java] HashMap, HashTable, ConcurrentHashMap, CopyOnWriteArrayList, SynchronizedList 비교
CS/Java 2024. 5. 11. 21:06

Map 인터페이스의 구현체로는 HashMap , HashTable, ConcurrentHashMap 등이 있다. Map은 형태를 띄게 된다. 그럼 이 셋의 특징과 차이는 무엇이 있을까? 그리고 ArrayList 형태를 띄는 CopyOnWriteArrayList, SynchronizedList란 무엇일까? 한번 알아보자.  📌HashMap특징Key와 value에 null을 허용한다.동기화를 보장하지 않는다.싱글 쓰레드 환경에서 사용하는게 좋다.HashTable과 ConcurrentHashMap보다 데이터를 찾는 속도는 빠르다.단점동기화를 보장하지 않기 때문에 신뢰성과 안정성이 떨어진다.public class HashMap extends AbstractMap implements Map, Clonea..

article thumbnail
[Java] 백준 18110번 : solved.ac
코딩테스트/백준 2024. 5. 10. 15:45

문제https://www.acmicpc.net/problem/18110 접근 방법N이 주어졌을때 30%의 절사평균을 하여 상위 15% 하위 15%를 제외한다.따라서 배열을 정렬하여 Math.round를 통해 반올림된 인원을 제외한 나머지를 반복문을 돌며 더해준다.더하고 난 뒤 평균으로 나눌때에도 첫째자리 반올림을 통해 답을 구하는 문제이다.코드import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.Arrays;import java.util.StringTokenizer;public class Main { private static StringBuilder sb; private static BufferedRea..

article thumbnail
[Java] 백준 15829번 : Hashing
코딩테스트/백준 2024. 5. 10. 15:11

문제https://www.acmicpc.net/problem/15829  접근 방법해시값이 어떻게 나오는지 원리에 대해 설명해주고 그것을 구현한 문제이다.문자열이 들어오면 일단 각 문자를 int로 변환하고 1, 31, 31^2, 31^3 순으로 곱하면 된다.하지만 여기서 주의할 점은 값이 long범위를 초과할수도 있으니 1234567891로 나누는것에 유의하자.또한 마지막 값인 sum값도 1234567891로 나누어 떨어질수 있으므로 한번 더 나누어 주자. 코드import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.StringTokenizer;public class Main { private static Stri..

article thumbnail
[Java] 백준 11866번 : 요세푸스 문제 0
코딩테스트/백준 2024. 5. 9. 22:39

문제https://www.acmicpc.net/problem/11866 접근 방법N번까지 사람이 있고 돌아가며 K번째가 됐을때 봅는 사람을 순열로 나타낸다.따라서 큐에 넣고 K번째가 됐을때 뽑는것으로 문제를 푼다.import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.LinkedList;import java.util.Queue;import java.util.StringTokenizer;public class Main { private static StringBuilder sb; private static BufferedReader br; private static StringTokenizer st; ..

article thumbnail
[Java] 백준 11651번 : 좌표 정렬하기 2
코딩테스트/백준 2024. 5. 9. 20:53

문제https://www.acmicpc.net/problem/11651  접근 방법이것도 https://eungae-d.tistory.com/128 이 문제와 같은 좌표 정렬하기 문제이다.하지만 이번에는 Comparator가 아닌 클래스의 기본 정렬 방식인 Comparable을 사용해보았다. 코드import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.PriorityQueue;import java.util.StringTokenizer;public class Main { static class Node implements Comparable{ int x; ..

article thumbnail
[Java] 백준 11650번 : 좌표 정렬하기
코딩테스트/백준 2024. 5. 9. 20:43

문제https://www.acmicpc.net/problem/11650 접근 방법x좌표랑 y좌표를 순서대로 정렬한다음 출력하는 문제이다.따라서 Comparable, Comparator 두 가지 방법이 있지만 일반적으로 좌표를 정렬할때 기준이 없기 때문에 Comparator로 구현하는것이 낫겠다고 판단하였다.코드import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.Arrays;import java.util.Comparator;import java.util.StringTokenizer;public class Main { private static StringBuilder sb; private static Bu..

article thumbnail
[Java] 백준 11050번 : 이항 계수 1
코딩테스트/백준 2024. 5. 9. 20:30

문제https://www.acmicpc.net/problem/11050 접근 방법이항계수를 구하는 문제이다.N ! / (N-K)! * K!를 구하는 문제이다. N 이 5 K 가 2일때 5 ! /( 5-2) ! * 2!  이므로 5 *4 / 2 * 1 이 된다.따라서 다음과 같은 식으로 표현이 가능하다.코드import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.StringTokenizer;public class Main { private static StringBuilder sb; private static BufferedReader br; private static StringTokenizer st; ..

article thumbnail
[Java] 백준 10989번 : 수 정렬하기 3
코딩테스트/백준 2024. 5. 9. 20:16

문제https://www.acmicpc.net/problem/10989 접근 방법N개의 수가 주어졌을 때, 오름차순하는 가장 쉬운 방법은 Arrays.sort()를 이용하는 방법이다. 코드import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.Arrays;import java.util.StringTokenizer;public class Main { private static StringBuilder sb; private static BufferedReader br; private static StringTokenizer st; private static int N; ..

article thumbnail
[Java] JPA를 사용하는 이유, ORM이란?, JPA와 MyBatis의 차이
CS/Java 2024. 5. 9. 17:56

들어가기 앞서, MyBatis와 JPA를 사용하여 프로젝트를 만든 경험이 있었다. 확실히 JPA를 사용하면 코드 작성도 편해지고 가독성도 좋았다. 그렇다면 조금 더 자세하게 JPA가 무엇인지, Hibernate가 무엇인지, Spring Data JPA가 무엇인지, ORM이 무엇인지, JPA와 MyBatis의 차이는 무엇인지 자세하게 알아보자.📌JPA란?JPA(Java Persistence API)는 자바 진영의 ORM(Object Relational Mapping:객체 관계 매핑)기술 표준으로 사용되는 인터페이스 모음을 말한다.  여기서 중요하게 생각할 점은 JPA는 특정 기능을 하는 라이브러리가 아닌, ORM을 사용하기 위한 인터페이스의 모음이라는 것이다. 그렇다는 것은 JPA는 단순히 명세이기 때문..