분류 전체보기119 [버블 정렬] 백준 2750 버블정렬이란? 두 인접한 데이터의 크기를 비교해 정렬하는 방법이다. 간단하게 구현할 수 있지만 시간 복잡도는 O(㎡)으로 다른 정렬 알로그리즘보다 속도가 느린 편이다. 주로 loop를 돌면서 인접한 데이터 간의 swap 연산으로 정렬한다. 만약 특정한 루프의 전체 영역에서 swap이 한 번도 발생하지 않았다면 그 뒤에 있는 데이터가 모두 정렬됐다는 뜻이므로 프로세스를 종료해도 된다. 백준 2750번 문제를 sort를 사용할 수 있지만 n값이 작으므로 직접 정렬을 시도해서 문제를 풀어보겠다. public class 수정렬하기 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(n.. 2024. 2. 27. [슬라이딩 윈도우 실전문제] DNA 비밀번호 - 백준12891 슬라이딩 윈도우는 O(n)의 시간 복잡도를 가져 쉽게 문제를 풀 수 있다. s배열(기본 배열)과 비밀 번호 체크 배열을 설정한다. 윈도우에 포함된 문자로 현재 상태 배열을 만들고 현재 상태 배열과 비밀 번호 체크 배열을 비교한다. 비교 후 답이 되지 않는다면 한 칸 이동해 다시 비교한다. 이때, 빠진 첫 번째 인덱스 값과 들어온 새 인덱스 값만 비교하여 정보를 업데이트 해준다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class 슬라이딩_비밀번호 { static int myArr[]; static int ch.. 2024. 2. 26. [투 포인터 실전 문제] 주몽의 명령 -백준 1940 배열의 기본 지식 뿐만 아니라, 수학적인 접근 방법도 필요함. 그 감각을 기르기 위해서 기초 문제부터 깊게 보는 중! import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; public class 주몽의명령 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(.. 2024. 2. 26. [구간 합 실전 문제] 백준 11659 * 첫번째 줄: 개수 N(십만 이하), 합을 구해야 하는 횟수 M(십만 이하) * 두번째 줄: N개의 수 * 세번째 줄: 합을 구해야 하는 구간 * 시간 제한: 0.5초 * * 문제 풀이 방식 * S[n] = S[n-1] + A[n] 이용! public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); int N = Integer.parseInt(st.nextToken()); int M = Integer.parseInt(st.ne.. 2024. 2. 26. [배열과 리스트 연습문제] 숫자와 합 구하기 (백준 11720) N이 만 이하의 수이므로 int나 long으로 저장할 수 없다. 1. string으로 받아 toCharArray를 사용해 캐릭터형으로 배열을 만든 후 2. 아스키 문자에서 문자와 숫자 차이가 48임을 고려해 3. 각 수의 합을 구한다. public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); String sNum = sc.next(); char[] cNum = sNum.toCharArray(); int sum = 0; for(int i =0; i< cNum.length;i++) { sum += cNum[i] - '0'; //아스키 코드 48차이남 }.. 2024. 2. 26. 동시성 처리의 중요성과 방법 부트캠프에서 강의를 들으며 추가적으로 공부한 내용을 정리한 글입니다! 부족한 부분이 있다면 댓글 달아주시면 감사하겠습니다. 언제든 환영! 동시성 처리의 중요성 동시에 여러 요청이 들어오면 결과값이 정확하게 반영되지 않을 수 있습니다. 예를들어 100개의 재고량에 A가 5개, B가 3개, C 가 1개를 요청했다면, 우리가 생각하기에는 100-5-3-1 을 해서 요청 후 재고량은 91이라고 생각할 수 있습니다. 하지만 만약 요청이 동시처럼 보일만큼 비슷한 시점에 들어왔다면, 커밋 포인트가 95 일수도, 98일수도, 99가 될 수도 있습니다. (락으로 제한하는 방법이 있다) 또한 선착순 이벤트와 같이 순서가 중요한 상황에서는, 동시성 문제를 해결하지 못한 경우 요청이 유실되고 제한수 이상으로 쿠폰이 발급되는 .. 2024. 1. 26. 이전 1 ··· 5 6 7 8 9 10 11 ··· 20 다음