Java 31

백준 1158번: 요세푸스 문제

https://www.acmicpc.net/problem/1158 1158번: 요세푸스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net 풀이 접근법: LinkedList()에 1~N만큼 넣고, list size가 0이 될 떄까지 인덱스 값을 특정하여 값을 지우면서 출력함 인덱스 계산하는게 마음대로 되지 않아, 생각보다 오래 걸림.. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class Main { public static void main(String[..

Java 2023.03.18

[자료구조] HashMap : java.util.HashMap

HashMap 자료 구조는 { key : value } 쌍으로 이루어져 있고, 많은 양의 데이터를 검색할 때 뛰어난 성능을 발휘한다. Key와 value는 원하는 클래스나 데이터로 넣을 수 있고, key는 중복될 수 없으며 value는 중복값이 가능하다. 예시로는 아래처럼 선언하면 된다. HashMap map = new HashMap(); HashMap map = new HashMap(); HashMap map = new HashMap(); HashMap map = new HashMap(); 추가, 검색할때에 시간 복잡도는 O(1) 갖는다. HashMap 생성자와 method는 아래와 같다. 생성자 / 메서드 설명 HashMap() - HashMap 객체를 생성 ex) HashMap map = new H..

Data Structure 2023.03.16

[Java] 백준 10818번: 최소, 최대

https://www.acmicpc.net/problem/10818 10818번: 최소, 최대 첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다. www.acmicpc.net 접근법 : 값 하나씩 받아와 for문으로 돌려 최소, 최대 값을 구한다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Stack; import java.util.StringTokenizer; public clas..

Java 2023.03.15

[자료구조] Array와 Arrays class(java.util.Arrays)

1. Array Array는 많은 수의 데이터를 다룰 때 사용되는 자료 구조로 각 데이터를 인덱스로 1:1 대응하도록 구성되어 있고, 데이터가 메모리 상 연속적으로 저장되어 있다. Data 'a' 'b' 'c' Index 0 1 2 char[] arr = {'a','b','c'}; arr[0]; // 'a' arr[1]; // 'b' arr[2]; // 'c' 배열은 인덱스를 이용해 데이터에 빠르게 접근이 가능하지만, 선언할 때에 미리 최대 길이를 정해서 생성해야 한다. char[] arr = new char[3]; char[] arr = {'a','b','c'}; 배열의 시간 복잡도 Access O(1) Search O(n) Add, delete O(n) Access : 배열의 인덱스 번호를 알고 있다..

Data Structure 2023.03.15

프론트엔드와 백엔드 차이, 백엔드 개발자가 되고 싶은 이유

1 . 프론트엔드와 백엔드 차이 --------------------------------------------------------------------------------------------------------------------------------------------------- 프론트엔드와 백엔드는 웹 개발에서 중요한 두 가지 개념입니다. 각각의 역할과 차이점은 다음과 같습니다. 프론트엔드 (Front-end) 프론트엔드는 웹 페이지의 사용자 인터페이스(UI)를 담당합니다. HTML, CSS, JavaScript를 사용하여 웹 페이지를 디자인하고 구현합니다. 즉, 웹 사이트의 디자인, 레이아웃, 기능 등을 담당하는 부분입니다. 프론트엔드 개발자는 웹 페이지의 디자인 및 사용자 경험을 개..

Backend/Zero-base 2023.03.15

백준 1021번: 회전하는 큐

https://www.acmicpc.net/problem/1021 1021번: 회전하는 큐 첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 N보다 작거나 같은 자연수이다. 둘째 줄에는 지민이가 뽑아내려고 하는 수의 위치가 www.acmicpc.net 풀이 접근법 : 1~N 까지 queue에서 target을 찾을 때 까지 leftshift, rightshift 하여 count를 하나씩 증가한다. deque로 구현하여 start와 end에서 데이터를 뽑아서 shift 할 수 있음 Index를 편하게 구하는 방법을 알지 못해, 0부터 peek()함수로 비교하면서 index를 구함 import java.io.BufferedReader; impor..

Java 2023.03.14

[자료구조] Queue

Queue는 FIFO(First In First Out : 먼저 들어온 데이터가 먼저 나가는 구조)를 가진 자료 구조이다. 데이터를 입력한 순서대로 데이터가 처리되므로 여러 방식으로 활용될 수 있다. 은행창구 번호표 대기 : 빠른 번호표를 가진 사람이 먼저 업무를 봅니다. 프린터 출력 : 가장 먼저 대기열에 오른 프린트가 먼저 출력됩니다. 컴퓨터 운영체제의 테스크 스케쥴링 : 가장 간단한 형태의 선입선 처리 스케쥴링 정책 시간 복잡도 : 조회, 접근 : Ο(n) , 삽입 삭제 : Ο(1) java 내에는 Queue는 Interface 클래스라 구현 시에 Linkedlist로 구현하는 게 편함(java.util.Queue) Enqueue : add(), offer() Search : get(), conta..

Data Structure 2023.03.14

백준 25556번: 포스택 문제

https://www.acmicpc.net/problem/25556 25556번: 포스택 포닉스가 순열을 청소할 수 있으면 YES, 불가능하다면 NO를 출력한다. www.acmicpc.net 입력 예시 1) 10 4 3 6 7 8 9 10 2 1 5 --> YES 입력 예시 2) 5 5 4 3 2 1 --> NO 나의 해결법 생각 : 앞에 들어온 숫자 > 뒤에 들어온 숫자일 때 cnt(=0)가 하나씩 증가하여 cnt 가 3보다 클 경우 문제에서 제시하는 순열을 청소할 수 없다고 생각함 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenize..

Java 2023.03.14

[자료구조] Stack

Stack은 LIFO(Last In First Out : 마지막에 들어온 데이터가 먼저 나가는 구조)를 가진 자료 구조이다. 데이터가 입력된 순서의 역순으로 처리되기 때문에 여러 방식으로 사용될 수 있다. 웹 브라우저 방문기록 (뒤로 가기) : 가장 나중에 열린 페이지부터 다시 보여준다. 역순 문자열 만들기 : 가장 나중에 입력된 문자부터 출력한다. 실행 취소 (undo) : 가장 나중에 실행된 것부터 실행을 취소한다. 후위 표기법 계산 수식의 괄호 검사 (연산자 우선순위 표현을 위한 괄호 검사) 시간 복잡도 : 조회, 접근 : Ο(n) , 삽입 삭제 : Ο(1) import java.util.Stack; Stack stack = new Stack(); stack.push(1); stack.push(2)..

Data Structure 2023.03.13

[Java] HahsMap, key or value 오름차순, 내림차순

목적 : HashMap으로 데이터를 메모리에 저장한 후 key와 value 값에 따라 오름차순, 내림차순으로 정렬하고 더 나아가 원하는 방법으로 정렬하기 위해서 Collections.sort 함수 내에 함수를 넣어본다. HashMap은 Java 내에서 Map 인터페이스로 구현된 클래스이며, Key : value로 구성된 데이터 형태이다. Key와 value는 원하는 형태로 넣을 수 있고, 예시로는 아래처럼 선언하면 된다. HashMap map = new HashMap(); HashMap map = new HashMap(); HashMap map = new HashMap(); HashMap map = new HashMap(); 선언된 HashMap 내에서 Key는 중복될 수 없고, 동일한 key로 valu..

Java 2023.03.07