본문 바로가기

분류 전체보기

(86)
[Medium] 53. Maximum Subarray (아마존 코딩 테스트 기출 문제) #문제 설명 Leetcode 53번 문제는 정수형 배열이 있을 때, 그 배열의 subarray 즉, 부분 배열(주어진 배열의 연속한 일부분) 중 각 원소의 합이 가장 큰 부분 배열을 찾는 문제이다. 여기서 subarray란 주어진 배열에서 끊기지 않고 인접한 원소들의 집합이다. 예를 들어 [1,2,3,4,5]라는 배열에서 subarray는 [1,2], [2,3,4] 등등이 될 수 있다. 하지만 [1,3,5] 같이 인접하지않는 원소들로 구성된 배열은 subarray라고 할 수없다. #문제 풀이 class Solution { public int maxSubArray(int[] nums) { int currSum = 0; int maxSum = Integer.MIN_VALUE; for(int i = 0; i ..
[Easy] 733. Flood Fill (아마존 / 구글 코딩 테스트 기출 문제) #문제 설명 Leetcode 733번문제는 2d 배열에 x와y, 즉, 시작점이 주어지고, 정수 color가 주어진다. 이 주어진 배열의 시작점에서 시작해 그 지점에서 왼쪽, 오른쪽, 위, 아래의 지점이 시작한 color와 같다면, 그 지점의 color를 주어진 새로운 color로 바꾸는 문제이다. 예를 들어 위에 사진의 2d배열에서 시작점이 가운데 즉 (1,1)이라고 가정하면, 시작점을 주어진 새로운 color 2로 바꾸고, 처음 시작점에서 위 (0,1)로가면 시작점과 같은 color 1이기 때문에 2로 바꾼다, 또 (0,1)의 왼쪽과 오른쪽모두 1이기 때문에 2로 바꾼다. 이 과정을 계속 반복하면 된다. #문제 풀이 class Solution { public int[][] floodFill(int[][..
[Lecture 24] Virtualization #"가상 시스템"의 정의 하드웨어가 아닌 소프트웨어로 구현된 시스템 컴퓨터처럼 작동하는 독립적인 환경 컴퓨팅 디바이스(명령어 세트 등)에 대한 추상적인 사양 (언어 기반) 가상 시스템 명령 집합은 일반적으로 기존 아키텍처와 유사하지 않다 Java VM, .Net CLR 등등 virtual machine monitors (VMM) 실제 아키텍처에서 완전히 또는 부분적으로 가져온 명령 집합 #Java Bytecode 예제 Compiled from "h.java" public class h { public h(); Code: 0: aload_0 1: invokespecial #8 // Method java/lang/Object."":()V 4: return public static void main(java...
[Lecture 23] 클라우드, VM과 컨테이너 #클라우드 컴퓨팅 클라우드 컴퓨팅이란 서버, 스토리지 등의 IT 리소스를 인터넷을 통해 실시간 제공하고 사용한 만큼 비용을 지불하는 방식의 컴퓨팅을 말한다. 쉽게 말해 정보처리를 자신의 컴퓨터가 아닌 인터넷으로 연결된 다른 컴퓨터로 처리하는 기술을 말한다. 빅데이터를 처리하기 위해서는 다수의 서버를 통한 분산처리가 필수적이다. 분산처리는 클라우드의 핵심 기술이므로 빅데이터와 클라우드는 밀접한 관계를 맺고 있다. 빅데이터 선도 기업인 구글과 아마존이 클라우드 서비스를 주도하고 있는 이유도 여기에 있다. “X as a service” 예: SaaS (software as a service) Infrastructure as a Service 사용자가 커널에서 애플리케이션에 이르기까지 소프트웨어를 관리 클라우드..
[Lecture 20] TCP/IP 소켓 프로그래밍 #개요이번 포스트에서는 다음과 같은 네트워크 개념들을 알아보자IPv4/IPv6를 비롯한 TCP/IP전송 계층 프로토콜: TCP와 UDP포트 사용TCP/UDP에서의 디멀티플렉싱 / Demultiplexing (역다중화)IPv4 addressing(주소 지정) & 라우팅subnet / 서브넷(부분망) 및 CIDR 포함프로토콜 독립성BSD 소켓 APIDNS 네임 확인을 위한 유틸리티 함수 포함TCP/IPhttps://terms.naver.com/entry.naver?docId=1168072&ref=y&cid=40942&categoryId=32851#Transport and Network Layer*Transport Layer (전송 계층) 프로토콜: TCP (Transmission Control Protoco..
[Lecture 19] Networking / 네트워킹 #PART I: The Internet 인터넷이란 전 세계의 컴퓨터가 서로 연결되어 정보를 교환할 수 있는, 하나의 거대한 컴퓨터 통신망을 말한다. 수십억 개의 연결된 컴퓨팅 장치 hosts = end systems 인터넷의 "엣지"에서 네트워크 앱 실행 패킷 교환 / Packet switches forward packet / 전달 패킷(데이터 모음) 라우터, 스위치 통신 회선 / Communication links 광섬유, 구리, 라디오, 위성으로 구성됨 전송 속도: 대역폭 네트워크 장치, 라우터, 링크 모음: 보통 어느 한 조직에서 관리 인터넷: 네트워크의 네트워크 상호 연결된 ISP(Internet Service Provider)들 프로토콜은 어디에나 존재한다 메시지 보내기, 받기 제어 예: HTT..
[Lecture 18] Virtual Memory / 가상 메모리: Principles and Mechanisms #컴퓨터 구조 리뷰 Virtual memory/가상 메모리에 대해 보기 앞서 기본 컴퓨터 구조 개념을 다시 한번 살펴보자. Virtual address / 가상 주소: 링커, printf("%p\n", ptr) 등등과 같이 사용자 프로그램에서 사용하는 주소 범위: 0~2^ addresswidth Physical address / 물리 주소 내부적으로 메모리 주소를 지정하는 데 사용되는 주소. 사용자에게 보이지 않음 범위: 0~X (여기서 X는 컴퓨터의 메모리이다) Page / 페이지 Virtual page: 인접한 가상 주소 범위 Physical page (frame): 인접한 물리적 주소 범위 MMU (Memory management unit) 페이지 테이블에서 찾은 정보를 기반으로 가상 페이지를 물리..
[Easy] 125. Valid Palindrome #문제설명 #문제 풀이 풀이 1. class Solution { public boolean isPalindrome(String s) { s = s.toLowerCase().replaceAll("[^a-z0-9]", ""); int right = s.length() - 1, left = 0; while(right >= left){ if(s.charAt(left) != s.charAt(right)){ return false; } right--; left++; } return true; } } 풀이 2. public class Solution { public boolean isPalindrome(String s) { if (s.isEmpty()) { return true; } int head = 0, tail..