1. 스택(Stack) ▶ 스택이란, 한쪽에서만 자료를 넣고 뺄 수 있는 후입선출 LIFO(Last In First Out)형식의 선형 자료구조이다. 스택의 기본 개념은 영어 단어의 뜻과 같이 '쌓는다'는 뜻이다. 스택은 같은 구조와 크기의 자료를 정해진 방향으로만 쌓을수 있고, top으로 정한 곳을 통해서만 접근할 수 있다. 예를 들어, 박스 쌓기에 비유할 수 있다. 박스를 아래에서 위로 차곡차곡 쌓으면 아래에 있는 박스를 치우기 위해서는 맨 위의 박스부터 치워야 한다. 아래부터 1->2->3 순서로 쌓여있는 상자를 오른쪽으로 옮긴다고 가정해보자. 먼저 가장 위에 있는 3번 상자를 오른쪽으로 옮기고, 그 후에는 2번 상자를 옮기고, 다음에는 1번 상자를 옮길 것이다. 즉, 마지막에 입력된 상자가 첫 번..
문제 정수 n이 주어질때, 1부터 n까지의 정수를 순서대로 담은 배열을 리턴하도록 solution 함수를 작성했습니다. 이때 코드가 올바르게 동작할 수 있도록 빈칸을 알맞게 채워주세요 매개변수 설명 정수 n이 solution 함수의 매개 변수로 주어집니다 n은 1이상 100,000 이하인 정수입니다 return값 설명 solution 함수는 1부터 n까지의 정수를 순서대로 담은 배열을 리턴합니다 예시 arr return 3 [1,2,3] 5 [1,2,3,4,5] class Solution { public int[] solution(int n) { int[] answer = new int[n]; for(int i=0; i
문제 "*"의 높이와 너비를 1이라고 했을 때, "*"을 이용해 직각 이등변 삼각형을 그리려고합니다. 정수 n 이 주어지면 높이와 너비가 n 인 직각 이등변 삼각형을 출력하도록 코드를 작성해보세요. 제한조건 n은 100이하인 자연수 입니다. 1 ≤ n ≤ 100 풀이 import java.util.Scanner; class Solution { public static void main(String[] args) { Scanner sc = new Scanner(System.in); //입력값 int a = sc.nextInt(); //i 줄 갯수 for (int i = 1; i
직사각형 좌표 구하기 직사각형을 만들기 위한 4개의 점 중 3개의 좌표가 주어질 때, 나머지 한 점의 좌표를 구하는 문제이다. 문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 입출력 예 v result [[1,4],[3,4],[3,10]] [1,10] [[1,1],[2,2],[1,2]] [2,1] 풀이 위와 같이 2차원 배열의 3개의 값을 이용해 나머지 한 점을 구하면 된다. 직사각형을 만들기 위해선 직선이 필요하다. x와 y의 좌표 값은 두 개씩 중복된다. [[1,4],[3,4],[3,10]] 을 보면 x값 3이 2개이고 y값 4가 2개이다. ..
1. 자료구조 자료구조란, 데이터 사이의 관계를 반영한 저장구조 및 그 조작 방법을 뜻한다. 컴퓨터의 프로그램을 실행하면 CPU에서 메모리로 데이터를 이동해서 처리하는데, 이 때 메모리를 효율적으로 사용하기 위해 데이터에 맞는 특성의 자료구조를 사용하는 것이 중요하다. 자료구조를 모두 나열하자면 아래 표와 같이 다양한 종류가 있다. 1.1 자료구조의 구성 Insert : 데이터를 어떻게 저장 할 것인가 Search : 데이터를 어떻게 탐색 할 것인가 Delete : 데이터를 어떻게 삭제 할 것인가 1.2 자료구조의 분류 단순구조 : 프로그래밍에서 사용되는 기본 데이터 타입 선형구조 : 저장되는 자료의 전후관계가 1:1 (리스트, 스택, 큐 등) 비선형구조 : 데이터 항목 사이의 관계가 1:n 또는 n:m..
Import import java.util.*; import는 java.util.* 하나만 선언하면 대부분의 라이브러리 함수, 콜렉션 함수들을 사용할 수있다. 코딩테스트시 이거하나 선언하고 시작하면 함수를 찾지 못한다는 에러는 만나지 않을 것이다. Sort 함수 int[] arr = {4,2,1,3}; Arrays.sort(arr); 출력 결과는 [1, 2, 3, 4] 로 정말 자주 사용한다. Math 함수 int answer = 1; answer = Math.max(answer,100); // answer : 100 answer = Math.min(answer,100); // answer : 1 다음과 같은 형태로 answer의 최대 최소값을 사용할 때 쓰는 방법이다. min()은 입력받은 두개의 인자..
1. 알고리즘이란?▶ 알고리즘은 어떠한 문제를 해결하기 위한 일련의 절차를 공식화한 형태로 표현한 것이다.최단 거리 혹은 최단 시간 내에 학교에 가는 길을 찾는 것, 샌드위치를 만들기 위한 재료를 준비하고 조리 순서를 진행하는 것, 매점에서 물건을 집고 계산하는 것까지 모두 알고리즘이라 할 수 있다. 프로그래밍에서 알고리즘은 input 값을 통해 output 값을 얻기 위한 계산 과정을 의미한다. 이러한 문제를 해결할 때, 정확하고 효율적으로 결과값을 얻기 위해서 알고리즘이 필요하다. 1.1 알고리즘의 조건좋은 알고리즘을 만들기 위해서는 다음과 같은 조건을 충족시켜야 한다.입력 : 외부에서 제공되는 자료가 0개 이상 존재한다.출력 : 적어도 2개 이상의 서로 다른 결과를 내어야 한다. 즉 모든 입력에 하..
시간 복잡도란 ? 알고리즘의 효율성을 판단하기 위한 지표로서, 프로그램 수행에 걸리는 절대적 시간이 아닌, 알고리즘을 수행하는데 사용되는 연산들이 몇 번 이루어지는가에 대한 것을 상대적 지표로 나타낸 것이다. 연산에는 산술, 대입, 비교, 이동이 있다. 시간 복잡도, 즉 성능 측정에 사용되는 표기법은 Big-O, Big-Omega(Ω), Theta(θ) 크게 세 가지로 나뉜다. 시간복잡도 성능지표 Better O(1) O(log n) O(n2) O(1): Operation push and pop on Stack O(log n): Binary Tree O(n): for loop O(n×log n): Quick Sort, Merge Sort, Heap Sort O(n2): Double for loop, In..