20210107-TIL

나영원·2021년 1월 8일
0

T.I.L.

목록 보기
106/145

오늘 공부할 내용

  • 오전 알고리즘 문제풀이
  • 오후 운영체제/네트워크 수업
  • 저녁 git/github 수업
  • TiL 정리 및 Git & 블로그 업데이트

오늘 공부한 것 & 배운 내용

알고리즘 문제풀이

체육복

  • 풀이
class Solution {
    public int solution(int n, int[] lost, int[] reserve) {

        //빌린 사람의 숫자
        int rent = 0;
        // 2개가진 사람이 잃어버렸을때
        for (int i = 0; i < lost.length ; i++) {
            for (int j = 0; j < reserve.length; j++) {
                if (lost[i] == reserve[j]) {
                    rent++;
                    reserve[j] = -50;
                    lost[i] = -100;
                }
            }
        }

        // 잃어버린사람중에 빌릴수있는 사람찾기
        for (int i = 0; i < lost.length ; i++) {
            for (int j = 0; j < reserve.length ; j++) {
                if((lost[i]+1) == reserve[j] || (lost[i]-1) == reserve[j]) {
                    rent++;
                    reserve[j] = -200 ;
                    break;
                }
            }
        }

        return n-lost.length+rent; //전체학생 - 잃어버린사람 + 빌린 사람
    }
}
  • 2중 for문 2개를 활용해 먼저 체육복 2개가진사람이 잃어버린 상황을 먼저 계산하고 다음 2중 for문에서 체육복 없는 사람들이 다른사람들에 빌리는 것을 계산하였다
    • 2개를 하나의 2중포문에서 분기처리 하지 않은 이유는 자기자신이 자신의 것을 사용한다는 조건을 만족시키기 위해서이다.( 만약 자신이 2번이고 1,2번 둘다 여분 체육복을 가진상황에서 분기처리를 하게되면 2번이 1번 체육복을 먼저 빌리기 때문이다)
  • 다른 풀이를 보니 2개가진 사람이 잃어버렸을 때를 hashSet을 활용해서 2중 for문이 아니게 처리해서 더 연산속도가 빠를 것 같았다

운영체제 & 네트워크 복습

  • 운영체제

    • 운영체제를 개발한다
    • 시스템콜을 개발
    • 시스테콜 기반, 프로그래밍 언어별 라이브러리 개발
    • 지원되는 프로그래밍 언어로 shell 프로그램 개발
    • 지원도는 프로그래밍 언어로 응용프로그램 개발
    • 정리하자면 운영체제별로 커널을 제어할 수 있는 시스템콜을 제공하고 시스템콜을 프로그래밍 언어별로 제어할 수 있도록 api를 제공하고 개발자들이 해당 언어를 사용하기 위해 제공된 api를 활용해서 응용
    • 프로그램을 활용해서 응용프로그램을 만들어서 사용자들이 사용을 한다
  • .사용자 모드와 커널 모드

  • 하나의 프로그램을 여러개의 프로세스로 구성할 수 있다는 말이 이해가 잘 가지 않는다

내일 공부할 내용

  • cs스터디
  • Srping 복습
  • Spring 수업
  • TiL 정리 및 Git & 블로그 업데이트
profile
배우는 개발 일기

0개의 댓글