[Java] 스택을 이용한 후위표기 계산기
·
Java/코딩테스트 연습 & 실습
중위표기를 후위표기로 바꾸는 계산기 실습 1. stack을 직접 구현 2. 컬렉션 stack 사용 1. stack 직접 구현 input : 113 + 11 - (32 - (9 - 2 + 6)) output : 113 11 + 32 9 2 - 6 + - - 1. strToStrArr() 메서드를 통해 문자열을 분리한다. 2. 분리한 문자열을 if문을 통해 후위계산식을 구한다. 3. 구한 후위계산식을 calC()메서드를 통해 계산결과를 얻는다. //후위표기법 (스택 구현) class MyStack { private String[] stk; //연산자 담을 배열 private int capacity; //스택 용량 private int ptr; // 스택 포인터 public MyStack() { ptr = -..
[Java] 이진검색 재귀함수로 구현하기
·
Java/코딩테스트 연습 & 실습
import java.util.Scanner; public class BinarySearchRecursion { // 2진검색 (재귀) static int binarySearch(int[] arr, int start, int end, int key) { // (배열, 시작 인덱스, 끝 인덱스, 찾을 값) if (start key) { return binarySearch(arr, start, mid -1, key); //중앙값이 찾으려는 값보다 크면 끝 인덱스를 중앙값-1로 설정 } else if (arr[mid] < key){ return binarySearch(arr, mid + 1, end, key); //중앙값이 찾으려는 값보다 작으면 시작 인덱스를 중앙값+1로 설정 } } return -1; //..
[Java] (실습) Baby-gin
·
Java/코딩테스트 연습 & 실습
필요하다고 생각한 메서드 : run( ArrayList arr ) : arr 안에 i, i+1, i+2가 존재하면 true 반환 triplete( ArrayList arr ) : arr 안에 i가 3번 이상 존재하면 true 반환 caseCheck( ArrayList arr ) : RR RT TR TT 가 둘 다 true이면 true 반환 , 아니면 flase babyGin( String str ) : 입력받은 문자열을 한 글자씩 int로 변환해 어레이리스트에 저장 caseCheck메서드가 true면 baby-gin 출력 import java.util.ArrayList; import java.util.Collections; import java.util.Scanner; public class Q3 { s..
[Java] (실습) 자바 정돈된 수
·
Java/코딩테스트 연습 & 실습
import java.util.ArrayList; import java.util.Scanner; public class Q2 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); try { System.out.println("Input X Number : "); int x = sc.nextInt(); System.out.println("Input Y Number : "); int y = sc.nextInt(); orderlyNumber(x,y); } catch(Exception e) { System.out.println("잘못 입력하셨습니다. "); } } // x~y 까지의 정돈된 수를 출력 public stati..
[Java] (실습) 자바 로또 프로그램
·
Java/코딩테스트 연습 & 실습
import java.util.LinkedHashSet; import java.util.Random; class Lotto{ private int[] arr; // 당첨번호 public Lotto(){ arr = new int[7]; setArr(); } public int[] getArr() { return arr; } public void setArr() { LinkedHashSet a = new LinkedHashSet(); Random rand = new Random(); int cnt=0; //중복 없이 7개 숫자 저장 while(a.size()
[Java] (실습) 가장 작은 수로 변환
·
Java/코딩테스트 연습 & 실습
중복처리 수정 필요 import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.HashSet; import java.util.Scanner; public class Q1 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("4자리 정수를 입력하세요: "); int num = sc.nextInt(); if(num>=1000 && num 0) { arr.add(num % 10); num /= 10; } //2. 정렬하기 Collections.sort(arr); //3.순..
[Java] 자바 객체 정렬 Comparable과 Comparator의 이해
·
Java/자바 이론
자바를 사용하다보면 객체를 정렬하고 싶은 경우가 많이 생긴다. 하지만 객체 안에 어떤 데이터를 기준으로 정렬할지 컴퓨터는 알 수 없다. 이 정렬 기준을 정해주는 것이 Comparable과 Comparator다. 즉, 객체를 비교할 수 있도록 해준다. Comparable & Comparator ( API 문서 ) Comparable과 Comparator는 모두 인터페이스다. 즉, 사용하기 위해서는 인터페이스 내에 있는 추상 메서드를 반드시 오버라이딩 해야 한다. 메서드를 확인하기 위해서 공식 API 문서를 참고하자. Comparable (Java Platform SE 8 ) This interface imposes a total ordering on the objects of each class that ..
[Java] 자바 제네릭(Generic)이란? (Feat. 오토박싱)
·
Java/자바 이론
제네릭 프로그래밍은 데이터 형식에 의존하지 않고, 하나의 값이 여러 다른 데이터 타입들을 가질 수 있는 기술에 중점을 두어 재사용성을 높일 수 있는 프로그래밍 방식이다. 다형성의 특징을 가지고 있고, 결국 편하려고 만들어졌다. 제네릭의 필요성 제네릭은 클래스나 메서드에서 사용할 내부 데이터 타입을 컴파일 시에 미리 지정한다. (강한 타입체크) 1. 잘못된 타입이 들어오는 것을 컴파일 단계에서 방지가 가능하다. 2. 실행 시 타입 검사나 타입 변환과 같은 번거로운 작업을 생략할 수 있게 된다. //제네릭 X ArrayList list = new ArrayList(); list.add("연필"); String temp = (String) list.get(0); //타입변환이 필요함 //제네릭 O ArrayL..