분류 전체보기 77

[프로그래머스] 기능 개발 - Java

로직 배포에 필요한 일수를 각각 계산한 뒤 해당 리스트를 순회한다. 앞의 일수가 pivot이 되어 pivot >= day 일 경우 → 함께 배포해야하기 때문에 count pivot < day 일 경우 → 다음 날 배포해야하기 때문에 count를 리턴할 리스트에 넣어주고 현재 day가 새로운 pivot이 되어 새로 count를 시작한다. 코드 import java.util.ArrayList; class Solution { public int[] solution(int[] progresses, int[] speeds) { int[] days = new int[speeds.length]; ArrayList deployment = new ArrayList(); // get days for(int i = 0 ; ..

코테 준비 2020.10.13

[프로그래머스] 완주하지 못한 선수 - Java

정말 간단한 문제지만 java로 오랜만에 풀어보는 문제라 간단한 걸로 준비했다 로직 hashMap을 만들고 participant와 compeltion을 동일한 hashmap에 넣어 카운트 해준다 중복되지 않은 값은 무조건 홀수이므로, hashmap 전체를 순회하여 % 2 == 1인 값을 return해준다. 코드 import java.util.*; class Solution { public String solution(String[] participant, String[] completion) { Map hashMap = new HashMap(); putElements(hashMap, participant); putElements(hashMap, completion); return nonCompletion..

코테 준비 2020.10.13

[프로그래머스] 삼각 달팽이

programmers.co.kr/learn/courses/30/lessons/68645 ㅎ...ㅏ 규칙성이 이리도 쉬운걸 왜 코딩 챌린지 당시에는 안보였을까.. 로직 n = 4 일 경우 [1] [2, 9] [3, 10, 8] [4, 5, 6, 7] 위와 같이 나타낼 수 있다 여기서 나타나는 규칙성은 숫자를 순서대로 넣는다고 할 때, x 인덱스 값 증가(왼쪽 면 채우기) y 인덱스 값 증가(바닥 면 채우기) x, y 인덱스 값 감소(오른쪽 면 채우기) 가 한 사이클이다. python에서는 case 문이 따로 존재하지 않아 채워야 하는 면이 바뀔 때마다 mode라는 변수에 1씩 더하고, % 3을 해주어 case 문과 비슷한 방식으로 동작하게끔 했다. 그리고 ( 1, 2, 3, 4 )가 왼쪽 면 ( 5, 6,..

코테 준비 2020.10.11

[컴퓨터 구조] 예외 상황

예외 상황 프로세서의 상태 변화에 대한 대응이다. 프로세서가 이벤트 발생을 감지하면 exception handler라는 운영체제 서브루틴으로 들어가 예외 상황을 처리한 후 중단 되었던 프로그램을 다시 실행하거나 중단한다. 예외의 종류로는 인터럽트, 오류, 중단 등이 있다. 예외 상황 중 오류(Fault)와 중단(Abort)의 차이 오류 ( Fault ) Potentially recoverable error 즉, 핸들러가 정정할 가능성이 있는 상태의 경우에는 fault handler로 제어를 넘겨준다. 핸들러가 에러 조건을 정정하게되면 오류를 발생시킨 인스트럭션을 return하여 재실행하고, 그렇지 못한 경우에는 abort 루틴으로 리턴하여 프로그램을 종료한다. 중단 ( Abort ) 주로 DRAM 혹은 ..

컴퓨터 시스템 2020.10.11

[컴퓨터 시스템] 프로세스와 스케줄러

프로세스 ( Process ) 바이너리 형태의 실행가능 목적파일(실행 파일)로 메모리에 적재되어 실행 중인 프로그램을 프로세스라고 한다. 응용 프로그램은 하나 이상의 프로세스로 이루어져있다. 하나의 응용 프로그램이 여러 프로세스들과 상호작용하면서 실행될 수도 있기 때문이다. ⁕ 엄밀히 말하면 프로그램은 코드와 데이터가 합쳐진 것으로 디스크 상에 목적파일로 혹은 주소공간에서 세그먼트로 존재한다. 그리고 프로세스는 실행 중에 있는 프로그램의 특정 상태이다. fork 함수의 작동 방식을 보면 차이가 명확해진다. fork 함수는 부모 프로세스를 복제하여 새로운 자식 프로세스를 만들어내는데 자식 프로세스는 부모와 동일한 프로그램을 실행한다(교과서 724p). 배치 처리 시스템 ( Batch Processing )..

컴퓨터 시스템 2020.10.10

[컴퓨터 시스템] 가상 메모리

키워드 페이징 메모리 단편화 내부 단편화 외부 단편화 페이지 교체 알고리즘 세그맨테이션 가상메모리 메인 메모리를 보다 효율적으로 더 적은 에러를 가지도록 관리하기 위해 메인메모리의 추상화로서 가상메모리 virtual memory(VM)를 사용한다. 각 프로세스에 하나의 사적 주소 공간으로 존재한다. 때문에 각 프로세스의 주소공간을 다른 프로세스에 의해 침해받지 않도록 하여 에러를 줄일 수 있다. 또한 각 프로세스마다 통일된 주소공간이 존재하게되어 메모리 관리를 단순화 시키는 역할도 한다. 프로세스 전체가 메모리에 올라와있지 않아도 실행이 가능하기 때문에 프로세스가 물리 메모리보다 커도 프로그램을 실행시킬 수 있다는 장점이 있다. 물리 주소 방식 CPU가 메모리에 접근할 때 물리 주소(PA, physica..

컴퓨터 시스템 2020.10.07

[컴퓨터 시스템] 컴퓨터 시스템 개괄

컴퓨터 시스템은 응용프로그램을 실행하기 위해 함께 동작하는 하드웨어 & 시스템 소프트웨어로 구성 프로그램 소스 프로그램(바이너리 파일 - non text file ) 0, 1로 이루어진 비트들로 구성 데이터의 저장과 처리를 목적으로 함 텍스트 파일(text file - EX hello.c ) byte 단위(8 bits)로 구성 오로지 ascii 문자들로 구성 프로그램 생성 - 사용자가 에디터에서 소스 프로그램(바이너리 파일)을 생성하고 내부적으로는 텍스트 파일 형태로 저장 프로그램 실행 - 텍스트 파일이 컴파일러와 링커에 의해 바이너리 실행파일로 번역 컴파일 시스템 소스 파일(hello.c) -> 실행파일(hello)로 번역하는 시스템 전처리기, 컴파일러, 어셈블러, 링커 로 구성 시스템 하드웨어 조직 ..

컴퓨터 시스템 2020.10.06

[프로그래머스] N -Queen

접근 엉엉..ㅠ 어려운 문제였다.. 예전에도 못풀고 포기했었던 문제였는데 이번에는 리더님의 도움을 받아 간신히 풀 수 있었다 크게 search, check 파트로 나뉜다. search 함수 dfs를 이용하여 모든 경우의 수를 순회한다 for loop이 0부터 n까지 돌아간다(이 부분을 잘하면 최적화를 할 수 있을 것같긴 하다) 현재 x 자리에 순회하면서 업데이트 되는 값들을 넣어주고(y값들) check했을 때 True라면 그 다음 자리인 x + 1 자리로 넘어가서 다시 탐색한다. (dfs 방식) loop 한 턴에 한 column 씩 확인 check 함수 현재 위치와 값이 주어진 조건에 부합하는지 확인하고, boolean을 리턴한다 개념이 살짝 말로 하기 어려워서 그림으로 잘 풀어내봤는데 미래의 내가 다시..

코테 준비 2020.09.25

[프로그래머스] 카펫

로직 red가 n * m 의 직사각형이라고 가정했을 때 sum = brown + red = (n+2) * (m+2) brown = 2(n+2) + 2(m+2) - 4 red = n*m 위 세 가지 조건을 만족한다 따라서, 식을 정리하여 n*m 과 n+m 두 가지 값을 구한 뒤 for loop으로 1부터 sum//2까지 순회하며, 현재 값 * (sum - 현재값) = n * m 이 되는 조합을 찾는다 찾게되면 각각 +2 씩을 해준다(n*m는 red에 대한 값이므로) 그리고 큰 수가 앞에오도록 정렬해준뒤 return 코드 def solution(brown, red): answer = [] sum = brown + red # red = n*m rect n_plus_m = brown//2 - 2 n_multi_..

코테 준비 2020.09.20