본문 바로가기

Study for Backend

(91)
[Java연습] 스택 후위 표기법 연산 import java.util.Stack; //20240220 후위 표기법 연산 - 소수로 출력 public class stackPractice04 { public static double calculate(String string){ Stack stack = new Stack(); for (String str : string.split(" ")) { if (str.equals("+")){ stack.push(stack.pop() + stack.pop()); } else if (str.equals("-")) { stack.push(- stack.pop() + stack.pop()); } else if (str.equals("*")) { stack.push(stack.pop() * stack.pop());..
[Java연습] 괄호 짝 맞추기 import java.util.Stack; //20240220 괄호 짝이 맞는지 검사 public class stackPractice03 { public static void checkParenthesis(String str){ Stack stack = new Stack(); boolean checkFlag = true; for (String s : str.split("")){ if(s.equals("(")){ stack.push(s); }else{ if(stack.isEmpty()){ checkFlag = false; break; }else { stack.pop(); } } } if (checkFlag && stack.isEmpty()){ System.out.println("PASS!"); }else ..
[Java연습] 스택 문자열 뒤집기 /* 20240220 문자열 뒤집기 */ import java.util.Stack; public class stackPractice02 { public static String reverseString(String str){ Stack stack = new Stack(); String result = ""; for (String s : str.split("")){ stack.push(s); } while (!stack.isEmpty()){ result = result + stack.pop(); } return result; } public static void main(String[] args){ //test code String result = reverseString("Hello"); System.o..
[Java연습] 배열을 이용한 기본 스택 구현 /* 20240220 배열을 이용한 기본 스택 구현 */ class MyStack{ int[] arr; int top = -1; MyStack(int size){ //생성자 arr = new int[size]; } public boolean isEmpty(){ if(this.top == -1){ return true; }else { return false; } } public boolean isFull(){ if(this.top == this.arr.length -1){ return true; }else { return false; } } public void push(int data){ if(this.isFull()){ System.out.println("Stack is full!"); return; ..
[Data Structure기초] Stack Stack (스택) - 데이터를 차곡차곡 쌓아올린 형태, 선형 자료구조 - 가장 마지막에 삽입된 자료가 가장 먼저 삭제됨 (Last In First Out , 후입선출) - 정해진 방향으로 쌓을 수 있고 top 으로 정한 곳을 통해서만 접근 가능 - 문서 편집기에서 undo 기능을 구현할 때 stack 을 사용 Stack 시간복잡도 삽입(Push) : O(1) 삭제(Pop) : O(1) 읽기(Peek) : O(1) 탐색(Search) : O(n) 접근(Access) : O(n) 연산 push() 삽입. 스택이 가득 차 있으면 오류 발생 후 종료 , 공간이 있으면 top 증가 시킨 후 데이터 추가 pop() 삭제. 스택이 비어있으면 오류 발생 후 종료 , 스택이 비어있지 않으면 top 이 가리키는 데이터를..
[Algorithm기초] 버블 정렬, 삽입 정렬, 선택 정렬 정렬 특정 값을 기준으로 데이터를 순서대로 배치하는 방법 정렬의 종류 1. 구현 난이도는 쉽지만 속도는 느린 알고리즘 - 버블 정렬, 삽입 정렬, 선택 정렬 2. 구현 난이도는 조금 더 어렵지만, 속도는 빠른 알고리즘 - 합병 정렬, 힙 정렬, 퀵 정렬, 트리 정렬 3. 하이브리드 정렬 - 팀 정렬, 블록 병합 정렬, 인트로 정렬 4. 기타 정렬 알고리즘 - 기수 정렬, 카운팅 정렬, 셸 정렬, 보고 정렬 버블 정렬 (Bubble Sort) 인접한 데이터를 비교하며 자리를 바꾸는 방식. 값을 비교하고 작은 수가 앞쪽으로 자리교체 알고리즘 복잡도 : O(n제곱) = n(n-1)/2 버블정렬구현 의사코드 (Pseudocode) *스도코드 : 알고리즘 flow 파악용 코드이며 실제 돌아가지 않음 bubbleS..
[Java기초] long, float에 L과 F를 붙여야 하는 이유 고정된 데이터를 리터럴(literal)이라고 하는데, 리터럴들은 자바가 실행될 때 메모리의 별도의 Data Area (Constant pool)에 공간을 할당받아 저장되어 있게 된다. 리터럴의 기본 데이터 타입을 정수의 경우 int로, 실수의 경우 double로 저장이 되게 된다. long 변수에 int 범위 안에 정수를 선언해도 에러가 안나는 이유는 int 리터럴이 자동으로 long으로 형변환 되기 때문이며 float의 경우도 동일하게 실수 리터럴의 기본 데이터 타입인 double로 결정이 되기 때문에, float 타입으로 저장이 되도록 하기 위해서 맨뒤에 F나 f 식별자를 붙여서 선언을 하면 정상적으로 동작하게 된다. 관련link https://kim-oriental.tistory.com/66 [자바..
[Java연습]String 자료형 Practice3 === 문제 설명 --- 자바의 String 자료형에는 많은 연산자 기능들이 있다. 프로그래밍의 기본기를 익히기 위해 일부 연산자들을 제한하고 다음의 기능을 구현하려 한다. - String 의 replace 기능 구현 - String의 replace, indexOf, contains를 사용하지 않고 구현한다. 입출력 예시 --- |입력 문자열|from|to|출력| |---|---|---|---| |"Hello Java, Nice to meet you! Java is fun!"|"Java"|"자바"|"Hello 자바, Nice to meet you! 자바 is fun!"| |POP|P|W|WOW| public class Practice3 { public static String solut..
[Java연습] 사용자가 입력한 알파벳의 대소문자를 변경하는 프로그램 Practice2 === 문제 설명 --- 아스키 코드는 미국정보교환표준부호를 의미한다. 영어로 American Standard Code for Information Interchange 이며, 줄여서 ASCII 라고 한다. 문자를 사용하는 대부분의 장치에서 사용하며 문자 인코딩 방식에 아스키를 기초로 두고 있다. 다음은 아스키의 특징이다. - 7비트로 구성 - 총 128개의 문자로 구성 (출력 불가능한 제어문자 33개, 출력 가능한 문자 95개) - 출력 가능한 문자들은 52개의 영문 알파벳 대소문자와, 10개의 숫자, 32개의 특수 문자, 1개의 공백 문자로 이루어진다. 이번 문제에서는 아스키 코드 중 알파벳에 대해서, 사용자가 입력한 알파벳의 대소문자를 변경하는 프로그램을 작성하시오. 입출력 예시 ..
[Java연습] 정수 자료형의 숫자를 거꾸로 변환 Practice1 === 문제 설명 --- 입력된 정수 자료형의 숫자를 거꾸로 변환하는 프로그램을 작성하세요. - 예를들어 12345가 입력되면 54321로 변환하여 출력하면 된다. - 100의 경우 001이 되는데 이 경우 1만 출력하도록 한다. 입출력 예시 --- |입력|결과| |---|---| |12345|54321| |-12345|-54321| |100|1| |0|0| public class Practice1 { public static void solution(int num) { int numReverse = 0; //결과를 담음 boolean isMinus = false; //음수 체크 if(num 0){ i..