[Computer Science] [운영체제] 프로세스와 스레드
·
Computer Science/Operating System
프로세스와 스레드프로세스란 실행중인 프로그램을 뜻한다.같은 프로그램도 별도의 프로세스가 될 수 있다.포그라운드 프로세스 & 백그라운드 포로세스많은 종류의 프로세스가 있지만 대표적인 프로세스가 포그라운드 프로세스 & 백그라운드 포로세스가 있다.백그라운드 프로세스들 중에서는 지금 당장 사용자와 상호작용이 없지만 대기중에 있는 애들이 서비스에 있다.프로세스 제어 블록(PCB)동시다발적으로 실행되는 프로세스를 효율적으로 관리하기 위해서 PCB가 있다.프로세스의 꼬리표라고 생각하면 좋다. 모든 프로세스마다 갖고 있다.같은 프로그램도 별도의 프로세스가 있으면 각각의 PCB를 갖고 있다.PID: Process ID, 프로세스에 할당되어 있는 고유한 번호, 식별자레지스터스케줄링 정보메모리 정보사용한 파일 정보입출력장치..
[코딩테스트] [12891] DNA비밀번호 & [2118] 두개의탑
·
알고리즘/Two Pointer
[12891] DNA비밀번호시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율2 초512 MB2857410363754635.011%문제평소에 문자열을 가지고 노는 것을 좋아하는 민호는 DNA 문자열을 알게 되었다. DNA 문자열은 모든 문자열에 등장하는 문자가 {‘A’, ‘C’, ‘G’, ‘T’} 인 문자열을 말한다. 예를 들어 “ACKA”는 DNA 문자열이 아니지만 “ACCA”는 DNA 문자열이다. 이런 신비한 문자열에 완전히 매료된 민호는 임의의 DNA 문자열을 만들고 만들어진 DNA 문자열의 부분문자열을 비밀번호로 사용하기로 마음먹었다.하지만 민호는 이러한 방법에는 큰 문제가 있다는 것을 발견했다. 임의의 DNA 문자열의 부분문자열을 뽑았을 때 “AAAA”와 같이 보안에 취약한 비밀번호가 만들어..
[코딩테스트] [2230] 수 고르기
·
알고리즘/Two Pointer
시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율2 초128 MB274609311647330.856%문제N개의 정수로 이루어진 수열 A[1], A[2], …, A[N]이 있다. 이 수열에서 두 수를 골랐을 때(같은 수일 수도 있다), 그 차이가 M 이상이면서 제일 작은 경우를 구하는 프로그램을 작성하시오.예를 들어 수열이 {1, 2, 3, 4, 5}라고 하자. 만약 M = 3일 경우, 1 4, 1 5, 2 5를 골랐을 때 그 차이가 M 이상이 된다. 이 중에서 차이가 가장 작은 경우는 1 4나 2 5를 골랐을 때의 3이 된다.입력첫째 줄에 두 정수 N, M이 주어진다. 다음 N개의 줄에는 차례로 A[1], A[2], …, A[N]이 주어진다.출력첫째 줄에 M 이상이면서 가장 작은 차이를 출력한다. ..
[Flutter] [Error Handling] Result Pattern (간편로그인 적용)
·
Flutter
[Flutter] Result Pattern 적용하기오늘은 저번에 학습하였던 Result Pattern을 실제로 내 프로젝트에 적용시켜서 카카오 로그인과 애플 로그인의 Error Handling을 진행해보겠다.우선 어떻게 동작하는지 흐름을 정리해봤다위에 Flow를 보면 View → ViewModel → Repository → Service의 패턴을 따르는 것을 확인할 수 있다.LoginView에서 간편 로그인 버튼을 누르게 되면 LoginViewModel에 있는 Result 타입을 반환하는 함수가 실행이 된다.성공시 Router가 변경이 되고 Home으로 이동된다.실패시 Result안에 ErrorMessage가 담기게 되고 그것을 출력하거나 화면에 표시할 수 있다.LoginViewModel에 있는 함수가..
[코딩테스트] [Two Pointer] [2003] 수들의 합 2 & [1806] 부분합
·
알고리즘/Two Pointer
투 포인터 알고리즘코딩테스트에서 자주 나오는 유형 중 하나인 투 포인터 알고리즘에 대해 알아보자.먼저 말로 풀어보면 선형 데이터 구조에서 두 개의 인덱스를 관리하여 특정 조건을 만족하는 부분집합이나 특정값이다.이렇게 해서는 이해하기 어려우니 문제 예시를 보며 이해를 해보자.[2003] 수들의 합 2문제N개의 수로 된 수열 A[1], A[2], …, A[N] 이 있다. 이 수열의 i번째 수부터 j번째 수까지의 합 A[i] + A[i+1] + … + A[j-1] + A[j]가 M이 되는 경우의 수를 구하는 프로그램을 작성하시오.입력첫째 줄에 N(1 ≤ N ≤ 10,000), M(1 ≤ M ≤ 300,000,000)이 주어진다. 다음 줄에는 A[1], A[2], …, A[N]이 공백으로 분리되어 주어진다. 각..
[Flutter] [Error Handling] Result Pattern
·
Flutter
개인 프로젝트에서 모든 로그인 인증 방법은 구현이 완료되었다~! 😁그렇다면 바로 CRUD 기능을 개발하고 데이터 상태관리를 하면 될까?물론 해도 되지만 프로젝트에서 외부와 통신을 하는 경우에는 빠질 수 없는 작업이 있다.바로 Error Handling(예외 처리)이다.Application을 실행하여 외부와 통신을 하면 사용자가 잘못된 입력을 할 수도 있고, 네트워크 요청이 실패할 수도 있으며, 어딘가에서 문제가 발생할 수도 있다.그럴때 예외처리는 코드에서 발생할 수 있는 잠재적 오류를 처리하여 앱이 문제없이 작동되도록 해주는 것..!그러면 Flutter에서는 어떻게 예외 처리를 할 수 있는지 알아보겠다.Exception Handling with try/catch in Dart and Flutter예를 ..
[Flutter] [Firbase] 간편 로그인 구현하기(Apple🍎)
·
Flutter
간편 로그인 구현하기(Apple🍎)저번 시간에는 Flutter에서 카카오 간편 로그인을 구현하는 방법과 Firebase Auth에 카카오를 연동하는 방법을 학습해봤습니다. 이번에는 Apple 로그인을 구현해보고 Firebase Auth에 등록해주겠습니다.Firebase 인증 제공업체 추가하기제일 먼저 파이어베이스 프로젝트에 들어가서 인증 제공업체를 추가하겠습니다.아래 이미지를 보시면 저번에 했던 kakao, Apple, 익명이 등록된 것을 볼 수 있다.그리고 Apple 로그인 방법을 등록할 때 아래 처럼 사용 설정 버튼을 활성화 해주고 맨 아래 승인 콜백 URL을 복사하면 됩니다.이러면 파이어베이스에서 필요한 작업은 끝났습니다.Apple Identifier 등록아쉽게도 애플 로그인을 사용하려면 애플 개..
[Computer Science] [컴퓨터구조] Memory
·
Computer Science/Computer Architecture
RAM & ROM메인 메모리에는 두개의 하드웨어가 존재한다. 바로 RAM과 ROM간단하게 설명하면 RAM은 Random Access Memory로 어떤 주소에 접근하든 소요되는 시간이 동일하다, 임의의 위치에 접근 하는 시간이 동일하다는 뜻이다.그렇다면 ROM은 Read Only Memory로 읽기 전용이라는 뜻이다.MainMemory는 램과 롬이 있지만 보통 램을 지칭하는 경우가 많다RAM휘발성 저장장치, 전원이 꺼지면 데이터가 모두 사라진다.메모리에서 실행해야 할 데이터를 저장하고 있다.크기가 클수록 빠르게 실행하기 유리하다. 그 이유는 메모리 크기가 크다면 보조기억장치에서 많은 데이터를 갖고와서 저장할 수 있다. CPU는 보조기억장치에 있는 데이터를 가져오려면 Memory를 통해 가져와야 한다.DR..
[코딩테스트] [6236] 용돈관리 & [2110] 공유기설치
·
알고리즘/Binary Search
시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율1 초128 MB221546761462529.061%문제현우는 용돈을 효율적으로 활용하기 위해 계획을 짜기로 하였다. 현우는 앞으로 N일 동안 자신이 사용할 금액을 계산하였고, 돈을 펑펑 쓰지 않기 위해 정확히 M번만 통장에서 돈을 빼서 쓰기로 하였다. 현우는 통장에서 K원을 인출하며, 통장에서 뺀 돈으로 하루를 보낼 수 있으면 그대로 사용하고, 모자라게 되면 남은 금액은 통장에 집어넣고 다시 K원을 인출한다. 다만 현우는 M이라는 숫자를 좋아하기 때문에, 정확히 M번을 맞추기 위해서 남은 금액이 그날 사용할 금액보다 많더라도 남은 금액은 통장에 집어넣고 다시 K원을 인출할 수 있다. 현우는 돈을 아끼기 위해 인출 금액 K를 최소화하기로 하였다. 현우..
[Computer Science] [컴퓨터구조] 보조기억장치와 입출력장치
·
Computer Science/Computer Architecture
보조기억장치와 입출력장치보조기억장치와 입출력장치는 완전히 별개의 대상이라고 보긴 어렵다.단지, 보조기억장치는 보관할 데이터를 저장하는 특별한 형태의 입출력장치라고 보는게 좋다.(일부 서적은 보조기억 + 입출력 장치를 묶어서 주변장치라고도 한다.)실무에서 주로 사용되는 보조기억 장치를 뽑아보면 하드디스크와 플래시 메모리이다.하드디스크와 플래시 메모리하드 디스크 드라이브(HDD)플래시 메모리 기반으로 만든 저장 장치솔리드 스테이트 드라이브USB 메모리SD 카드하드 디스크LP, CD/DVD 플레이어와 유사플래터: 하드 디스크 상에서 실질적으로 데이터가 저장되는 부분스핀들: 플래터를 회전 시키는 부분헤드: 플래터의 데이터를 읽고 쓰는 부분, 헤드는 미세하게 떠 있는데 충돌이 되었을때 데이터를 잃을 수 있다.디스..
[코딩테스트] Parametric Search [2417] 제곱근 구하기 & [2805] 나무자르기 & [1654] 랜선 자르기
·
알고리즘/Binary Search
Parmaetric SearchBinary Search를 이용한 최적값 탐색 기법을 Parmaetric Search라고 한다.최적값이란, ~~를 할 수 있는 최소값, 최대값, 어떤 조건을 만족하는 최적값을 의미한다. 좀 더 자세히 봐보자.연속적이거나 이산적인 값의 집합에서 최적갑 X를 찾는 문제에서 X를 경계로 조건을 만족하는 집합과 답이 될 수 없는 집합을 판정할 수 있을 때 추정값 A에 대한 판정을 반복해 X를 찾는 방법이다.이전에 풀었던 문제 숫자 카드 2를 비유해서 봐보자.모든 추정값 A를 모두 확인하지 않아도 최적값 X를 기준으로 판정결과가 나눠진다면 Binary Search를 적용해볼 수 있다.그렇다면 Parmaetric Search를 이용한 문제를 풀어 보자.[2417] 정수제곱근시간 제한 ..
[Flutter] [Firbase] 간편 로그인 구현하기(kakao💬)
·
Flutter
개인 프로젝트의 기획에는 간편 로그인 기능이 있다.일단 Firebase 프로젝트는 생성하였다고 가정하에 진행한다.카카오 로그인과 애플 로그인 기능이 있는데 Firebase를 이용하여 간편 로그인을 구현할 것 이기에 오늘은 Firebase와 kakao 설정부터 알아보자.Kakao 프로젝트 생성일단 카카오 간편 로그인을 하려면 Kakao developers에서 애플리케이션을 추가해야 한다.들어가서 추가해주자. 나는 “풀밭”이란 프로젝트를 추가했다.내 애플리케이션 > 앱 설정 > 플랫폼에서 안드로이드는 패키지명과 키 해시를 추가해주고 iOS는 번들ID를 지정해주면 된다.키 해시는 인증서값으로 악성앱인지 판별하는데 사용 된다. 그리고 패키지명과 번들 ID는 프로젝트내에서 같은 값을 지정해줘야 한다.안드로이드 플..
[코딩테스트] [2470] 두 용액 & [10816] 숫자 카드 2
·
알고리즘/Binary Search
문제KOI 부설 과학연구소에서는 많은 종류의 산성 용액과 알칼리성 용액을 보유하고 있다. 각 용액에는 그 용액의 특성을 나타내는 하나의 정수가 주어져있다. 산성 용액의 특성값은 1부터 1,000,000,000까지의 양의 정수로 나타내고, 알칼리성 용액의 특성값은 -1부터 -1,000,000,000까지의 음의 정수로 나타낸다.같은 양의 두 용액을 혼합한 용액의 특성값은 혼합에 사용된 각 용액의 특성값의 합으로 정의한다. 이 연구소에서는 같은 양의 두 용액을 혼합하여 특성값이 0에 가장 가까운 용액을 만들려고 한다.예를 들어, 주어진 용액들의 특성값이 [-2, 4, -99, -1, 98]인 경우에는 특성값이 -99인 용액과 특성값이 98인 용액을 혼합하면 특성값이 -1인 용액을 만들 수 있고, 이 용액이 특..
[코딩테스트] [2295] 세 수의 합
·
알고리즘/Binary Search
[2295] 세 수의 합시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율1 초128 MB163975042335728.500%문제N(5 ≤ N ≤ 1,000)개의 자연수들로 이루어진 집합 U가 있다. 이 중에서 적당히 세 수를 골랐을 때, 그 세 수의 합 d도 U안에 포함되는 경우가 있을 수 있다. 이러한 경우들 중에서, 가장 큰 d를 찾으라.예를 들어 {2, 3, 5, 10, 18}와 같은 집합이 있다고 하자. 2+3+5 = 10이 되고, 이 수는 집합에 포함된다. 하지만 3+5+10 = 18이 되고, 이 경우가 세 수의 합이 가장 커지는 경우이다.입력첫째 줄에 자연수 N이 주어진다. 다음 N개의 줄에 차례로 U의 원소가 하나씩 주어진다. 주어진 U는 집합이 되므로 입력되는 두 수가 같아서는 안 된..
[Computer Science] [컴퓨터구조] CPU(2)
·
Computer Science/Computer Architecture
[컴퓨터 구조] 멀티코어와 멀티 프로세서멀티코어와 멀티 프로세서 부분은 빠른 CPU를 위한 하드웨어적인 설계로 볼 수 있다.빠른 CPU를 만들고 싶다면 CPU의 성능을 끌어올리고 싶다면 어떻게 CPU를 설계해야 할 까?CPU의 성능을 끌어올리는 아주 기본적인 내용컴퓨터 부품은 클럭 신호에 맞춰 일사분란하게 움직인다.CPU는 클럭 신호(제어장치가 클럭신호를 받아냄)에 따라 명령어 사이클에 맞춰 명령어를 실행한다.클럭 신호를 바르게 반복한다면?박자가 빨라지고 명령어 사이클이 빨라진다.실행속도가 더 빨라지는 것이 일반적.클럭 속도가 높은 CPU는 일반적으로 성능이 좋다.클럭 속도(Hz): 1초에 반복된 클럭의 횟수로 측정 1Hz, 1GHz = 10^9Hz(오늘날 CPU 속도)좋은 CPU 일수록 클럭속도가 높은..