목록2024/11 13
재밌고 어려운 IT를 이해해보자~!
스택을 인덱스로 활용할 발상의 전환이 필요하다. 배열을 순회하면서 현재 원소가 이전의 원소보다 작을 때 까지 배열의 index를 stack에 push 한다.그리고 만약 현재 원소가 스택의 top 원소를 인덱스로 하는 수열의 원소보다 크게 될 경우 stack의 원소를 pop하면서 해당 인덱스에 해당하는 원소들을 현재 원소로 바꿔주는 것이다. 3 5 2 7 Stack[0] [3,5,2,7] 3스택이 빌때까지 반복arr[stack.pop()]) = arr[i]=> arr[0] = arr[1][5,5,2,7]stack empty상태 5>2Stack [1,2] 2스택이 빌때까지 반복arr[stack.pop()] = arr[i]=> arr[2] = arr[3][5,5,7,7]Stack[1] =..
스택을 활용하되 해당 타워의 인덱스를 저장할 자료구조를 활용해야한다.import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Stack;import java.util.StringTokenizer;public class Main { static class Top { int idx; int height; Top(int idx, int height) { this.idx = idx; this.height = height; } } public static ..
빌딩을 순차적으로 세워놨다고 가정하면 80,000 ~ 1 까지 총합을 구해야하고 그 값은 32억을 넘어간다.따라서 int가 아닌 long 선언!import java.util.*;import java.lang.*;import java.io.*;// The main method must be in a class named "Main".class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int num = scan.nextInt(); long cnt=0; int[] height = new int[num]; for (int i=0; ..
CMS 란! 콘텐츠 관리 시스템(Contents Management System)은 사용자가 디지털 콘텐츠를 생성, 관리, 저장 및 수정할 수 있도록 지원하는 소프트웨어입니다. 이 포괄적인 시스템은 앱, 이미지, 웹사이트 등의 콘텐츠를 조직의 요구와 직원에 맞게 사용자 친화적인 인터페이스에 저장할 수 있도록 원스톱으로 제공됩니다. CMS의 작동 원리수동으로 실행되는 웹사이트는 개인 또는 조직이 각 웹페이지에 대해 정적 HTML 파일을 직접 코딩하거나 작성하여 서버에 업로드해야 합니다. 이는 상당한 시간과 에너지가 필요한 작업이며, 이미 바쁜 조직의 귀중한 리소스를 빼앗는 정기적인 업데이트가 필요합니다.CMS 플랫폼을 사용하면 이러한 복잡한 작업을 피할 수 있습니다. 시스템이 이미 백엔드와 프론트엔드에서 ..
app : 앱의 소스 코드와 리소스 파일이 들어있는 폴더manifests : AndroidManifest.xml 파일이 위치함. 앱의 구성 요소들을 정의하고 안드로이드 시스템이 앱을 실행할 때 필요한 정보를 제공 java : Java 코드가 위치하는 폴더. Basic Activity로 생성된 프로젝트에서는 MainActivity.java 파일이 포함됨. 앱의 메인 화면인 Activity를 구현함. res : 앱에서 사용하는 리소스 파일이 위치하는 폴더. layout 폴더, 이미지 파일, 문자열이나 색상 등의 리소스가 여기에 포함된다.(UI용) res폴더 구조drawable : 이미지 파일을 저장하는 폴더. 앱에서 사용되는 모든 이미지 파일들이 포함. 기본적으로 앱 아이콘을 만들기 위해 ic_launche..
Kotlin은 Java의 한계와 복잡성을 극복하고자 탄생!그리고 안드로이드 앱 개발을 더 간결하고 생산적으로 만들기 위한 목적으로 개발되었고, 공식적으로 안드로이드 앱 개발 언어로 사용할 수 있습니다. Kotlin 과 Java의 차이1. 보다 간결한 문법 Kotlin은 Java에 비해 훨씬 간결한 문법을 가지고 있습니다. 예를 들어, 변수를 선언할 때 타입 추론을 사용하므로 데이터 타입을 명시적으로 선언하지 않아도 됩니다. 2. Null 안정성 Kotlin은 널 포인터 예외를 방지하기 위한 기본적인 지원을 제공합니다.변수에 null을 할당하려면 타입 뒤에 물음표(?)를 붙여야 하며, 이를 통해 안전한 널 처리가 가능해집니다. 3. 확장 함수 Kotlin은 기존 클래스의 메서드를 확장하여 사용할 수 있는 ..
생명주기(Lifecycle)란?Lifecycle은 Life + cycle의 합성어로, 삶의 순환이라고 직역할 수 있겠다. 말 그대로 탄생하고 성장하여 죽음에 이르기까지의 과정이라고 생각한다면, 이것을 안드로이드 앱에 적용한 것이 바로 Android Lifecycle이다. Activity, Fragment, Service 총 세가지 종류의 Lifecycle이 있다. 생명주기가 필요한 이유!예를 들어보자. 당신은 지금 카톡을 하고 있다. 그런데 갑자기 친구가 술먹자며 나오라고 전화를 했다. 당신이 전화를 받는순간 전화창이 화면에 보일 것이다. 그러다 약속을 잡고 전화를 끊고 다시 카톡을 실행하면 화면에 카톡창이 보일 것이다. 카톡 실행중 -> 카톡 닫고 전화 실행 -> 전화 실행중 -> 전화 끊고 카톡 실행..
웹서버의 하나로 Apache와 동일한 역할을 한다! Nginx 장점 1. 높은 성능과 작은 메모리 사용Nginx는 비동기 I/O 처리 방식을 사용하여 높은 성능을 제공합니다. 이를 통해 대규모 웹 사이트에서도 빠른 응답 시간을 보장할 수 있습니다. 또한 Nginx는 적은 메모리 사용량으로도 높은 성능을 제공합니다. 이를 통해 서버 운용 비용을 절감할 수 있습니다. 2. 리버스 프록시(Reverse Proxy) 사용이 가능 프록시(Proxy)의 사전적 정의는 "대리"입니다. 인터넷 접속을 할 때 보안상의 문제로 직접 통신을 주고받을 수 없을 때 그 사이의 중계기로서 대리로 통신을 수행하는 기능을 프록시라고 말합니다. 이렇게 중계를 기능하는 것을 우리는 프록시 서버라고 부릅니다. 프록시는 크게 포워드 프록시..