본문 바로가기

분류 전체보기

[프로그래머스] 월간 코드 챌린지 시즌 3 - 빛의 경로 사이클 (Java) 문제 링크 코딩테스트 연습 - 빛의 경로 사이클 각 칸마다 S, L, 또는 R가 써져 있는 격자가 있습니다. 당신은 이 격자에서 빛을 쏘고자 합니다. 이 격자의 각 칸에는 다음과 같은 특이한 성질이 있습니다. 빛이 "S"가 써진 칸에 도달한 경우, 직진 programmers.co.kr 문제 설명 각 칸마다 S, L, 또는 R가 써져 있는 격자가 있습니다. 당신은 이 격자에서 빛을 쏘고자 합니다. 이 격자의 각 칸에는 다음과 같은 특이한 성질이 있습니다. 빛이 "S"가 써진 칸에 도달한 경우, 직진합니다. 빛이 "L"이 써진 칸에 도달한 경우, 좌회전을 합니다. 빛이 "R"이 써진 칸에 도달한 경우, 우회전을 합니다. 빛이 격자의 끝을 넘어갈 경우, 반대쪽 끝으로 다시 돌아옵니다. 예를 들어, 빛이 1행에..
[프로그래머스] 2017 카카오코드 본선 - 리틀 프렌즈 사천성 (Java) 문제 링크 코딩테스트 연습 - 리틀 프렌즈 사천성 리틀 프렌즈 사천성 언제나 맛있는 음식들이 가득한 평화로운 푸드 타운. 푸드 타운에서 행복하게 사는 리틀 프렌즈들은 마을에 있는 매직 스푼을 보물처럼 보관하고 있다. 매직 스푼은 재료만 programmers.co.kr 문제 설명 리틀 프렌즈 사천성 언제나 맛있는 음식들이 가득한 평화로운 푸드 타운. 푸드 타운에서 행복하게 사는 리틀 프렌즈들은 마을에 있는 매직 스푼을 보물처럼 보관하고 있다. 매직 스푼은 재료만 준비해서 냄비에 넣고 휘젓기만 하면 순식간에 최고의 요리로 만들어주는 신비의 아이템. 어느 날 매직 스푼을 호시탐탐 노리는 악당들이 보물을 훔쳐간다. 매직 스푼을 되찾고 다시 마을에 평화를 가져오기 위해 프렌즈의 대모험이 시작되는데... 리틀 프렌..
[Clean Code(클린 코드)] 4장 주석 본 게시글은 를 학습한 내용을 정리한 글입니다. (문제시 삭제하겠습니다.) Clean Code(클린 코드) - 교보문고 애자일 소프트웨어 장인 정신 | 나쁜 코드도 돌아는 간다. 하지만 코드가 깨끗하지 못하면 개발 조직은 기어간다. 매년 지저분한 코드로 수많은 시간과 상당한 자원이 낭비된다. 그래야 할 이유 www.kyobobook.co.kr 주석은 기껏해야 필요악이다. 우리에게 프로그래밍 언어를 치밀하게 사용해 의도를 표현할 능력이 있다면, 주석은 거의 필요하지 않으리라. 아니, 전혀 필요하지 않으리라. 주석이 필요한 상황에 처하면 곰곰히 생각하기 바란다. 상황을 역전해 코드로 의도를 표현할 방법은 없을까? 주석은 오래될수록 코드에서 멀어진다. 오래될수록 완전히 그릇될 가능성도 커진다. 프로그래머들이 ..
[Web] 웹 취약점 및 공격 기법 1. XSS(Cross Site Scripting) 악의적인 사용자가 공격하려는 사이트에 스크립트를 넣는 기법. 주로 다른 웹사이트와 정보를 교환하는 식으로 작동하므로 사이트 간 스크립팅이라고 명칭함. 웹 애플리케이션이 사용자로부터 입력받은 값을 제대로 검사하지 않고 사용할 경우 나타남 공격에 성공하면 사이트에 접속한 사용자가 삽입된 코드를 실행시키게 되고, 보통 의도치 않은 행동을 수정시키거나, 쿠키나 세션 토큰 등을 탈취한다. 자바스크립트를 이용한 공격이 주로 많음 공격방법에 따라 Stored XSS와 Reflected XSS로 나뉜다. Stored XSS 사이트 게시판이나 댓글, 닉네임 등의 형태로 삽입된 스크립트가 데이터베이스에 저장되는 방식 저장된 악성스크립트가 있는 게시글 등을 열람한 사용자들..
[운영체제] 가상 메모리 가상 메모리란 어떤 프로세스를 실행할 때 프로세스 전체가 메모리에 적재되지 않고도 실행이 가능하도록 하는 기법이다. 어떤 프로세스가 차지하는 메모리가 전체 메모리 용량보다 크더라도, 지금 현재 필요한 부분만 메모리에 적재하여 메모리에 올라가는 프로세스의 크기를 줄일 수 있기 때문에 물리 메모리 용량을 초과하는 프로그램도 동작시킬 수 있다. 파일이나 메모리가 둘 이상의 프로세스들에 의해 공유되는 것을 가능하게 한다. 어떤 프로세스나 파일이 메모리 주소를 참조할 때 특정 물리주소가 아닌 가상 주소를 참조하기 때문. 요구 페이징(Demand Paging) 가상 메모리는 프로세스를 실행할 때, 실행에 필요한 부분만 메모리에 올리는 것이라고 했다. 이때 프로세스의 일부분은 페이지 단위일 수도 있고, 세그먼트 단위..
[데이터베이스] 트랜잭션(Transaction) 트랜잭션(Transaction)은 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산 트랜잭션의 성질(ACID) Atomicity(원자성) 트랜잭션의 연산은 데이터베이스에 모두 반영되든지 아니면 전혀 반영되지 않아야 한다. (ALL-OR-NOTHING. 더 이상 쪼갤 수 없는 상태인 원자의 성질을 가졌다는 의미에서 원자성이라고 함) 트랜잭션 내의 모든 명령은 반드시 수행되어야 하며, 어느 하나라도 오류가 발생하면 트랜잭션 전부가 취소되어야 한다. Consistency(일관성) 트랜잭션의 작업 처리 결과가 항상 일관성이 있어야 한다 Isolation(고립성) 둘 이상의 트랜잭션이 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행..
[운영체제] 페이징과 세그멘테이션 페이징과 세그멘테이션은 가상 메모리를 관리하는 기법으로 프로세스가 사용하는 메모리 공간을 잘게 나누어 비연속적으로 실제 메모리에 할당하는 메모리 관리 기법이다. 페이징(Paging) 프로세스의 주소 공간을 페이지(page)란 단위의 고정된 사이즈로 나누어 물리적 메모리에 불연속으로 저장하는 방식 페이징 방식으로 메모리를 할당하게 되면 실제 프로세스가 실행될 때는 각각의 페이지들이 실제 메모리의 어디에 위치하고 있는지를 빠르게 알 수 있어야 함 프로세스의 입장에선 자신이 사용하고 있는 메모리 공간이 흩어져있는 페이지들이 아니라 하나의 연속된 메모리 공간으로 이해할 수 있어야지 프로그램 실행이 효율적이게 됨 → 페이징은 프로세스가 바라보는 메모리 주소 공간(논리 주소)와 실제 메모리 주소 공간(물리 주소)를..
[운영체제] 메모리 관리 메모리 관리가 필요한 이유 프로그램의 실행(프로세스)를 위해서는 메모리를 할당해야 함 메모리는 한정된 자원이기 때문에 멀티 프로그래밍 시스템에서는 여러 프로세스들이 메모리를 효율적으로 이용할 수 있도록 관리가 필요함 효율적인 메모리 참조(논리 - 물리 주소 변환) - 프로세스가 메모리 주소를 직접 참조하는 것이 아니라 프로세스의 주소 공간이란 것과 메모리의 주소 공간이란 것을 구분하고 있기 때문에 좀 더 빠르게 메모리 주소를 참조할 수 있는 관리 방법도 추가적으로 필요함. 스와핑(Swapping) CPU에서 실행되지 않는 프로세스 중 일부를 메모리가 아닌 디스크에 저장하는 기법 swap in : 디스크 → 메모리 swap out : 메모리 → 디스크 가상 메모리 기법의 핵심으로 디스크를 활용하여 큰 메모..