응애개발자
article thumbnail
[Java] 백준 1407번 : 2로 몇 번 나누어질까
코딩테스트/백준 2024. 5. 17. 16:18

문제https://www.acmicpc.net/problem/1407  접근 방법상당히 애를 먹었던 문제였다. f(n) 정의가 주어지고 a b 자연수가 주어졌을때 f(a)~f(b)를 구하는 문제이다.먼저 2로 한번도 나눌수 없는 개수를 더하고2로 나누어지지만 단 한번만 나누어지는 갯수, 2^2로 나누어지지만 단 한번만 나누어지는 갯수, 2^3...2^4 로나누어지지만 단 한번만 나누어지는 갯수를 더해주었다.아마 위의 접근 방법만 보면 이해가 안될것이다. 예를들어서 먼저 B값이 10 이라고 가정을 해보자. 2번 과정을 해보면10개중 2로 나누어지지 않는 값은 n/2 = 5 개가 될 것이다.f(1) = 2^0f(2) = 2^1 f(3) = 2^0 f(4) = 2^2 f(5) = 2^0 f(6) = 2^1 f..

article thumbnail
[Java] 쿠키와 세션의 차이
CS/Java 2024. 5. 16. 18:08

들어가기 앞서 쿠키와 세션을 사용하는 이유에 대해서 먼저 생각해보자. HTTP 프로토콜은 비연결성, 무상태성이라는 특징을 갖는다.비연결성(Connectionless) : 클라이언트가 서버에 요청을 보냈을때(Request), 그에 맞는 응답(Response)을 보낸 후 연결을 끊는 처리방식이다.무상태성(Stateless) : 연결을 끊는 순간 서버의 통신이 끝나며 상태 정보는 유지하지 않는다.따라서 클라이언트와 서버가 통신을 할 때 서버는 클라이언트가 누구인지 계속 인증을 해주어야 한다. 예를들어 로그인을 하고 마이페이지를 가고 싶지만, 정보가 유지되지 않아서 다시 로그인을 해야하고, 장바구니를 가려고 해도 로그인을 해야한다. 이처럼 매번 요청을 보낼때마다 로그인을 하면 굉장히 불편할 것이다. 그런 불편함..

article thumbnail
[Java] 백준 2436번 : 공약수
코딩테스트/백준 2024. 5. 14. 17:44

문제https://www.acmicpc.net/problem/2436  접근 방법최대공약수와 최소공배수가 주어지고, 최대공약수를 만족하는 두 수, 최소공배수를 만족하는 두 수를 구하는 문제이다.따라서 두 수 (A,B) / 최대공약수 = 최소공배수 이므로 A * B = 최대공약수 * 최소공배수이다.최대공약수의 배수를 탐색하며 조건에 맞게 a와 b를 찾아줍니다.코드import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.StringTokenizer;public class Main { private static BufferedReader br; private static StringTokenizer st; p..

article thumbnail
[Java] 백준 2725번 : 보이는 점의 개수
코딩테스트/백준 2024. 5. 14. 12:22

문제https://www.acmicpc.net/problem/2725 접근 방법(x,y) 점이 주어졌을 때 0,0 에서 보이는 점의 개수를 구하는 문제입니다.예를들어 (1,1), (2,2), (3,3) 이렇게 3개의 좌표는 같은 선분이므로 보이지 않습니다.따라서 기울기가 겹치지 않는 (기울기의 최대공약수가 1인 선분) 값을 찾아서 두개씩(좌표를 대각선으로 잘랐을때 겹치므로) 더해주면 됩니다.코드import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.StringTokenizer;public class Main { private static StringBuilder sb; private static Buffer..

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; ..