![[java] 백준 1377번 문제(버블 소트)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FpgZfu%2FbtsMQEJ5tmQ%2FAAAAAAAAAAAAAAAAAAAAABW9fyE4J8nck2pTtlOEf1wIPQOF-zZmU_v2VXNuk507%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1759244399%26allow_ip%3D%26allow_referer%3D%26signature%3DIWXmWQ2mBVC4QJ5h1FJvaZjfg1Y%253D)
원본 링크 : https://www.acmicpc.net/problem/1377문제설명 소스코드import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Arrays;public class Boj_1377{ // 정렬 전 인덱스와 값을 저장하는 객체 static class Pair implements Comparable { int index; // index 저장 int value; // value 저장 // 생성자 Pair(int index, int value) { this...
![[java] 백준 16967번 문제(배열 복원하기)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FbKDJyZ%2FbtsMRkbWroh%2FAAAAAAAAAAAAAAAAAAAAAItJ423sVA83EMLjk5ILB19Yaq5VoUjSkBcpkzKGtmW3%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1759244399%26allow_ip%3D%26allow_referer%3D%26signature%3DHShuQE4iFLnWt2jtB6yApwlsvp4%253D)
원본 링크 : https://www.acmicpc.net/problem/16967문제설명 소스코드import java.io.*;import java.util.StringTokenizer;public class Boj_16967{ public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); // H, W, X, Y를 받아옴 StringT..
![[React] vite를 통해서 리액트 프로젝트 생성 및 실행](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FqrxIQ%2FbtsMQdYurF4%2FAAAAAAAAAAAAAAAAAAAAAKz_4Ze_kSQguXljqJHLgUMESyBJhY9xAOJ2kvy6sdkp%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1759244399%26allow_ip%3D%26allow_referer%3D%26signature%3D1Epp0T%252B2jsIpAdJjkj7SOnpfxmA%253D)
프로젝트 생성우선 node.js가 설치되어있어야 한다.필자의 node 버전은 22.14.0이다.맥에서 Homebrew를 통해서 22버전을 다운로드하는 명령어는 아래와 같다.brew install node@22 이후 프로젝트 폴더를 생성할 경로로 이동한다.cd cd /Users/... 아래의 명령어를 입력한다.npm create vite@latest 위와 같은 선택과정을 생략하려면 아래의 명령어를 입력한다.npm create vite@latest my-react-app -- --template reactnpm create: npm을 사용해 새 프로젝트를 생성하는 명령어vite@latest: vite의 최신 버전을 사용my-react-app:생성할 프로젝트 폴더명--: 이후의 옵션들을 vite 명령어에 전..
![[java] 백준 17298번 문제(오큰수)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FbzqYwT%2FbtsMOQXoozj%2FAAAAAAAAAAAAAAAAAAAAAJxJLMpIon0jHoo9osbzOU1CAjmvm8q4k9RM-iaog5qf%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1759244399%26allow_ip%3D%26allow_referer%3D%26signature%3DjR7eJxoOfjj2JZ7bTV8Zeer7LXU%253D)
원본 링크 : https://www.acmicpc.net/problem/17298 문제설명 소스코드import java.io.*;import java.util.Stack;import java.util.StringTokenizer;public class Main{ public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); // n과 수열을 받아옴..
![[java] 백준 1874번 문제(스택 수열)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FUI9dK%2FbtsMMGOJXpB%2FAAAAAAAAAAAAAAAAAAAAAJi-XPLJmQqYc45SDuUg-ud6j3W-KKTNEe7KjRJgiIRu%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1759244399%26allow_ip%3D%26allow_referer%3D%26signature%3DsR4tf6xi4EphnXVENGkgTSHMJLc%253D)
원본 링크 : https://www.acmicpc.net/problem/1874 문제설명 소스코드import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Stack;public class Boj_1874 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb = new StringBuilder(); Stack..
![[Java] 백준 12891번 문제(DNA 비밀번호)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fk4qQd%2FbtsMMc0396h%2FAAAAAAAAAAAAAAAAAAAAAImfgTrgjXnKBOW41MuKnzNutAeGwUkury9SBNsZRaQV%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1759244399%26allow_ip%3D%26allow_referer%3D%26signature%3DLnllWjGUCBkSBKtSZZC9O557puY%253D)
원본 링크 : https://www.acmicpc.net/problem/12891 문제설명 소스코드import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.StringTokenizer;public class Boj_12891{ static int[] inputACGT = new int[4]; // 입력 받은 부분문자열에 포함되어야 할 최소 개수 static int[] countACGT = new int[4]; // 구간에 포함된 부분문자열에 포함된 개수 public static void main(String[] args) throws IOExceptio..
![[Java] BigInteger 클래스](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FvaZ5K%2FbtsMyk5Ob4e%2FAAAAAAAAAAAAAAAAAAAAAJfkqqn-aSfteOUgXM_IEsEALheMc-pF5XVEGCYgWY_w%2Fimg.jpg%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1759244399%26allow_ip%3D%26allow_referer%3D%26signature%3Dfllai%252FBB4apisgwgrXHvA4AeKRo%253D)
BigInteger는 Java에서 기본적으로 제공하는 정수 타입(int, long)보다 더 큰 정수를 다룰 수 있도록 설계된 클래스이다.int는 32비트 정수(약 ±21억), long은 64비트 정수(약 ±9경)까지만 저장할 수 있지만, BigInteger는 이보다 훨씬 큰 정수(무한대)를 다룰 수 있다.생성문자열을 이용한 생성import java.math.BigInteger;public class Main { public static void main(String[] args) { BigInteger bigInt1 = new BigInteger("123456789012345678901234567890"); System.out.println(bigInt1); // 1234..
![[Spring] GeoIP를 이용한 해외 IP 차단](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FstShJ%2FbtsLO6109qd%2FAAAAAAAAAAAAAAAAAAAAAGuwB4-kfrNdBD8lnraHL7qEyDSwpPpPzbw7qFDUcubh%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1759244399%26allow_ip%3D%26allow_referer%3D%26signature%3DzihEvoQzH5GgLt8kdGKbnDMcGs8%253D)
MaxMind 에서 데이터베이스 다운로드MaxMind에서 먼저 데이터베이스를 받아와야한다.국가를 제외한 나머지 자료(시, 도 등)는 꽤 부정확하다는 글이 많고, 해외인지 아닌지가 가장 중요하기 때문에 country 데이터베이스만 사용하기로 했다.아래 사이트에서 회원 가입을 한 후 country 데이터베이스를 다운로드 받는다.(GeoLite2-Country.mmdb)https://www.maxmind.com/en/home 스프링에 적용의존성 추가build.gradle에 geoip 의존성을 추가해준다.implementation "com.maxmind.geoip2:geoip2:4.1.0" 서비스 로직 작성아래 서비스 계층에는getClientIP() : request 객체를 바탕으로 IP를 추출하는 메서드 ge..