본문 바로가기

자바 자료구조 알고리즘

(15)
코딩 테스트 Java 스택 큐 문제 풀이 개요와 목적 코딩 테스트 대표적인 스택 큐 문제들을 풀어보고, 스택 큐의 문제 풀이 방식에 대해서 알아본다. 후위식 연산 352+*9- 풀이 후위식이란, 연산만 뒤로 뺀 것이다. 예를 들어 5 -3 은 5 3 - 이렇게 표현한다. 3 5 2 + * 9 - 에서 숫자를 만나면 스택에 넣고, 연산자를 만나면 처음 숫자는 rt로 그 다음 숫자는 lt로 pop해서 알아온다. 그리고 lt 연산자 rt (5+2) 결과를 계산해서, 다시 스택에 넣는다. 이 동작을 반복해서 최종 연산 결과를 구한다. import java.util.Scanner; import java.util.Stack; public class 후위식연산 { public static void main(String[] args) { Scanner sc ..
코딩테스트 Java 투 포인터 문제 풀이 개요와 목적 코딩 테스트 대표적인 자바 투포인터 문제들을 풀어보고, 배열의 문제 풀이 방식에 대해서 알아본다. 두 배열 합치기 3 1 3 5 5 2 3 6 7 9 풀이 두 배열 index 0부터 서로 비교한다. 더 작은 쪽을 answer에 추가하고, 인덱스를 한 칸 올려, 다음 수를 비교 대상으로 정한다. 이런 식으로 반복하여, answer를 만든다. import java.util.ArrayList; import java.util.Scanner; public class 두배열합치기 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] a = new int[n]; fo..
코딩 테스트 Java 배열 문제 풀이 개요와 목적 코딩 테스트 대표적인 자바 배열 문제들을 풀어보고, 배열의 문제 풀이 방식에 대해서 알아본다. 뒤집은 소수 구하기(소수와 수 뒤집기 알고리즘 이해) 9 32 55 62 20 250 370 200 30 100 풀이 수를 먼저 뒤짚은 값을 구하고 prime인지 확인하는 메소드를 실행하디. import java.util.Scanner; public class 뒤짚은소수 { //소수인지 판별하는 메소드 소수라면 true를 반환 한다. public static boolean isPrime(int num) { if(num==1) return false; for(int i=2; i 0) { int t = tmp % 10; res = res * 10 + t; tmp = tmp / 10; } if (isPr..
코딩 테스트 Java 문자열 문제 풀이 개요와 목적 자바의 문자열 문제를 풀면서, 문자열을 다루는 기능들에 대해서 알아보자. 문제 1. 대소문자 변환 String str = “SpEdCaR” 문자열 str의 각 알파벳을 소문자는 대문자로 대문자는 소문자로 바꿔보자. 풀이 public class Main{ public static void main(String[] args){ String str = "SpEdCaR"; char[] chars = str.toCharArray(); StringBuilder sb = new StringBuilder(); for (char c : chars) { if (Character.isLowerCase(c)) { sb.append(Character.toUpperCase(c)); } else { sb.append(..
자바 해시 테이블 자료구조 1. 해시와 해시 테이블 용어 정리 해시는 인덱스를 의미한다. 데이터(key + value)에서 key를 해시 함수에 넣어서, 해시(인덱스)를 얻어낸다. 얻어낸 해시(인덱스)를 배열 인덱스와 매치 하여, 데이터를 저장한다. 이렇게 데이터 중 키를 해시함수를 통해서, 인덱스를 얻어내고, 이 인덱스를 배열 인덱스에 맞춰 데이터 value를 저장하는 자료구조가 해시 테이블이다. 2. 좋은 해시 함수란? 예를 들어 데이터(key:이름, value:나이)라는 데이터로 좋은 해시 함수에 대해서 알아보자. 데이터(김민성, 16), 데이터(최선화, 33)가 있다. 이제 각 데이터의 key를 해시 함수를 얻어 인덱스 값을 얻어낸다. 하지만 이때, 김민성과 최선화의 해시 함수를 통해 얻은 인덱스 값이 같아지는 상황이 발생..
자바의 스택과 큐 사용 이유 스택과 큐의 필요성 자료를 최대한 움직이지 않고, 그 안에 요소들을 저장하고 출력하기 위함이다. 값을 변경할 때마다, 그 안에 요소들이 많은 변화가 일어나면, 많은 컴퓨터 자원을 사용하여, 과부하 가능성이 있다. 보다 빠른 데이터 처리를 위해 스택과 큐를 이용한다. 스택 쌓이고 위에서 빼는 구조. Last In First Out push Stack에 객체를 저장한다. pop Stack의 맨 위에 저장된 객체를 꺼낸다. peek Stack의 맨 위에 저장된 객체를 반환한다. Stack에서 꺼내지는 않습니다. 비었을 때 null을 반환한다. empty Stack이 비어있는지 알려준다. 있으면 true, 없으면 false를 반환한다. search Stack에서 주어진 객체를 찾아서 그 위치를 반환한..
행렬의 덧셈과 뺄셈 곱셈 행렬의 덧셈과 뺄셈 성사 조건 두 행렬의 행과 열의 개수가 같아야 한다. 자바의 2차원 배열 행 가로(행과) row 열 세로 column int[][] arr = new int[2][3]; System.out.println(Arrays.deepToString(arr)); [[0, 0, 0], [0, 0, 0]] int[][] arr2 = {{1, 2}, {1, 2}, {1, 2}}; //3행 2열 System.out.println(Arrays.deepToString(arr2)); [[1, 2], [1, 2], [1, 2]] row 값으로 행렬의 덧셈 식 new int[4][5]가 주어졌을 때 어떤 모양이 되는 지 파악하는 것이 중요하다. 4행 5열 int[][] a = new int[2][3] [[0, ..

반응형