IT/알고리즘|자료구조 6

스택(Stack)

[Stack(스택)]→ 데이터를 일시적으로 보관하는(==쌓아놓는) 자료구조 특징LIFO (후입선출) → 마지막에 넣은 데이터를 가장 먼저 꺼냄PUSH(넣기), POP(꺼내기)PUSH와 POP이 이루어지는 꼭대기를 top이라고 하고, 스택의 가장 아랫부분을 bottom이라고 한다.예시자바 프로그램에서 메서드를 호출하고 실행할 때 프로그램 내부에서 스택을 사용한다.해당 사진은 자바 프로그램에서 메서드가 호출될 때 순서에 따라 스택이 사용되고 있음을 알 수 있다. main() 먼저 실행되므로 main() 먼저 pushmain() 안에서 z()를 호출하므로 z() push,z() 안에서 x(), y() 순대로 호출하므로 x() push했다가 pop, y() push했다가 popx, y가 모두 호출되고 끝나면 ..

반복 과정에서 조건 판단하기

[ *를 n개 출력하되 w개마다 줄 바꿈을 하는 프로그램 작성 ]  예를 들어, n값이 14이고 w값이 5이면**************라는 출력 결과가 나와야 한다. 문제 분석, 입력 및 조건 정리, 출력 규칙 구상, 반복문 설계 순으로 생각해보자. ===생각 흐름 정리===[문제 분석]1. 별은 n개 출력되어야 한다.2. 한 줄에는 별이 w개이며, w개가 입력되면 다음줄로 개행(\n) 되어야 한다. [입력 및 조건 정리]1. 사용자에게 n, w를 입력받아야 한다. -> 스캐너 사용 [출력 규칙 구상]1. 별을 n개 찍는 반복문이 있어야 함2. w-1개마다 줄 바꿈이 필요하다. 왜 w-1이냐면 i가 0부터 시작하기 때문에. * * * * *---------------------0 1..

자료구조와 함께 배우는 알고리즘 입문 [자바편] : 가우스 덧셈

가우스의 덧셈이란? 연속된 자연수의 합을 구하는 방법이다.일정한 정수가 순서대로 나열되었을 때 맨 앞 정수와 맨 뒤 정수를 더해나가는 것으로, for/while문보다 효율이 좋다. 예를 들어,1 2 3 4 5 6 7 8 9 10 이라는 숫자가 있다면,1+10, 2+9, 3+8, 4+7, 5+6 11을 총 5번 더한 것과 같다는 뜻이다. 맨 첫 항 + 맨 마지막 항을 더한 값이 총 5번 있고,2개씩 묶이므로 2n = 10 , 총 5를 곱하였다. 그러므로 공식은 (맨 첫 항 + 맨 마지막 항) / (항의 개수/2) 인 것이다!! package class01;public class Gauss { public static void main(String[] args) { // 연속되는 정수의 합을 구한다...

자료구조와 함께 배우는 알고리즘 입문 [자바편] : 중앙값 구하기

최소값, 최대값 로직은 이용해볼 일이 많은데 중앙값 로직은 처음 봐서 일단은 책을 보지 않고 직접 고민해보았다. 한 가지의 경우만 고려하려고 하지 않았고 최대한 많은 경우의 수를 떠올리려 노력했다. 1 ) 맨 처음에는 모든 수들의 평균값을 구해서 평균값과 가장 가까운 수를 구하면 중앙값이 되지 않을까 했는데 그렇지 않다는 것을 알게 되었다. 왜냐하면 예를 들어1, 2, 100 3개의 숫자가 있다.이들의 평균값을 구하면 34.33... 이라는 숫자가 나오고 34.33...은 가장 큰 100이라는 숫자에 가깝기 때문에 절대 중앙값이 될 수 없다. 즉, 평균은 중앙값이 될 수 없다. 2 ) 그러다가 생각한 점은, 앞에서 최댓값 알고리즘을 작성할 때 모든 경우의 수를 일일이 if문으로 검사하였는데, 중앙값도 i..

자료구조와 함께 배우는 알고리즘 입문 [자바편] : 최대값 구하기

알고리즘이란? 어떤 문제를 해결하기 위한 절차로, 명확하게 정의되고 순서가 있는 유한 개의 규칙으로 이루어진 집합1. 세 값의 최댓값 구하기 [책에 나온 코드]public class BookEx { public static void main(String[] args) { Scanner stdIn = new Scanner(System.in); System.out.println("세 정수의 최댓값을 구합니다."); System.out.print("a의 값 : "); int a = stdIn.nextInt(); System.out.print("b의 값 : "); int b = stdIn.nextInt(); System.out.print("c의 값 : "); int c = stdIn.nextIn..

발표 준비 - 선택정렬에 대하여

선택정렬이란? 입력 배열 전체에서 최소값을 선택하여 배열의 0번 원소와 자리를 바꾸고, 그 다음에는 0번 원소를 제외한 나머지 원소에서 최소값을 선택하여 배열의 1번 원소와 자리를 바꾸는 형식이다. 이처럼 마지막까지 최소값을 비교하여 자리를 바꿔 최종적으로 오름차순 정렬을 마무리하는 것이 선택 정렬의 방식이다. 예를 들어, 6칸 짜리 배열이 있다고 치자. 그 배열에는 총 6개의 요소가 들어있다.요소들은 5, 7, 3, 1, 9, 6 순으로 들어있다.이 요소들을 선택 정렬을 이용해 정렬해볼 것이다. 먼저, 모든 인덱스를 훑으며 최소값을 찾아본다. 3번 인덱스에 들어있는 1이 최소값임을 확인할 수 있다.그러므로 0번 인덱스에 들어있는 5와 3번 인덱스에 들어있는 1을 서로 자리바꿈한다.그러면 0번 인덱스에는..