본문 바로가기

전체 글

(364)
18_numberSearch [ 문제 ] 문제를 천천히 읽어보자. 문자열을 입력받는데 그 안에 숫자가 포함되어있다. 그 숫자를 모두 찾아 더한 뒤, 그 값을 '숫자와 공백을 제외한' 나머지 문자열의 길이로 나눈 값을 정수로 반올림하여 반환하는 문제이다. 입출력 예시를 보자. 'Hello6 '이라는 문자열을 입력받았으면 여기서 숫자는 '6'이다. 6을 '숫자와 공백을 제외한' 나머지 문자열의 길이인 5로 나누면 1.2이다. 이 값을 반올림하면 1이라는 값이 나온다. [ 풀이 ] 나의 로직은 다음과 같다. 1/ 반복문을 이용해 문자열에서 숫자를 모두 찾아 더한다. 2/ 공백, 숫자가 아니면 문자열이면 그 수를 더한다. 3/ 숫자의 합, 문자열길이를 구하면 숫자의 합을 문자열 길이로 나누어서 반올림한다. function numberSea..
운영체제 개요 및 응용프로그램 운영체제 컴퓨터나 스마트폰의 기기 그 자체(하드웨어)는 스스로 할 수 있는 일이 없다. 하드웨어에게 일을 시켜야만 의미가 있다. 하드웨어에게 일을 시키는 주체가 바로 '운영체제'이다. 의미 - 컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층. - 우리가 일반적으로 컴퓨터를 사용하면서 실행한 모든 프로그램들은 운영체제에서 관리하고 제어한다. ex: Windows, Mac OS, IOS, Linux etc. 컴퓨터 시스템의 자원(소프트웨어, 하드웨어)를 효율적으로 관리하는 것이 중요한 역할. 프로세서CPU, 입출력장치, 기억장치 등 리소스를 효율적으로 관리. 주어진 자원으로 최대한의 성능을 내도록 하는 것. 사용자간의 형평성 있는 자원 분배. 파일, 메시지..
스코프 checkpoint 문제 스코프에 대해서 공부하였고, 제대로 이해했는지 확인하기 위해 checkpoint 문제를 풀어보았다. //Q.1 let x = 30; function get () { return x; //전역변수 x에서 가져온다. 함수 스코프 내에서 x를 별도로 선언하지 않음. } let result = get(20); //30. 여기서 20을 인자로 받아 함수에 전달해주었지만 get함수 내부의 어떤 변수에도 할당되지 않음. // Q.2 let x = 30; function get (x) { //매개변수 x가 선언되어 있다. return x;//여기서 x는 전역변수 x가 아니라, get함수내의 스코프에 선언된 매개변수 x. 함수 스코프로 x=20을 선언한 것. } let result = get(20); //20 //Q.3..
16_isIsogram [ 문제 ] 이해하기 쉬운 문제이다. 알파벳을 한번씩만 사용하여 만든 단어(아이소그램)일 경우 true, 아니라면 false를 반환시키는 문제이다. 여기서 주의사항은, 빈 문자열을 입력받을 경우 true를 리턴, 그리고 대소문자는 구별하지 않는다. [ 풀이 ] 나의 로직은 다음과 같다. 1/ 대소문자를 구별하지 않게 하기위해, 입력받은 문자열을 소문자 또는 대문자로 통일시킨다. 2/ 이중 반복문을 이용하여 똑같은 알파벳이 있으면 false를 반환시키고, 반복문이 끝나도록 같은 알파벳이 있지 않으면 true를 반환시킨다. function isIsogram(str) { let capital = str.toUpperCase(); //먼저 입력받은 str을 대문자로 통일시킨다. for(let i = 0; i <..
15_modulo [ 문제 ] 문제를 읽자마자 바로 나머지 연산자(%)를 사용해야겠다, 라고 생각했는데 주의사항에 나눗셈(/), 나머지(%)연산자 사용금지라고 되어있었다... 저 두 연산자를 모두 사용하지 않으면 이 문제를 어떻게 풀어야하나.. 감이 오지 않았는데, 예전에 비슷한 문제를 풀었던 기억이 났다. 나누는 값으로 -값이 되기 전까지 계속해서 빼면 되는 것이다! [ 풀이 ] 나의 로직은 다음과 같다. while 반복문을 이용하여 나누는 값으로 반복적으로 -를 하여 나머지값을 구한다. function modulo(num1, num2) { // (5, 2) if(num1 === 0) { //주의사항에 적힌대로, 0은 어떤 수로 나누어도 나머지가 0이다. return 0; } else if(num2 === 0){ //주..
14_superIncreasing [ 문제 ] 문제는 간단하다. 모든 각 요소들이 이전까지의 요소들의 합보다 더 크면 true, 하나라도 같거나 작다면 false를 return한다. 여기서 주의해야할 점은, arr[i]는 자연수가 아닌 '정수'라는 것. 즉 -의 값이 있을 수도 있다!(이걸 간과하여 처음에 테스트 하나를 통과하지 못했다.) [ 풀이 ] 나의 로직은 다음과 같다. 1/ 이전 까지의 요소들의 합에 대한 변수를 선언한다. 2/ 반복문을 돌면서 해당 인덱스의 값이 이전 요소들의 합보다 작으면 false를 리턴한다. 만약 크면 이전까지의 요소값에 더한다. function superIncreasing(arr) { let all = arr[0] //이전 요소들의 값을 all이라는 변수에 선언하고, 0번째 인덱스를 할당한다. for(l..
[자료구조 - Queue] Queue란? (feat.버퍼 Buffer) Queue의 사전적 의미 먼저 Queue의 사전적의미부터 알아보자. Quene의 의미는 "줄을 서서 기다리다", "대기행렬" 이다. 자료구조로 본다면 Queue는 Stack과 반대되는 개념. Stack은 접시가 쌓여있는 모양으로 가장 나중에 들어간 것이 가장 먼저 나오는 LIFO(Last In First Out) 특징이라면, Queue는 먼저 들어간 데이터(data)가 먼저 나오는 FIFO(First In First Out), LILO(Last In Last Out)을 특징으로 가지고 있다. https://lion284.tistory.com/111 [자료구조 - Stack] Stack이란? 먼저 stack의 의미를 한번 살펴보자. * Stack : 쌓다, 쌓이다, 포개지다의 뜻. 즉, 마치 접시를 쌓아 ..
13_readVertically [ 문제 ] 간단한 문제이다.(하지만 난 조금 헤맸다..ㅎ) 문자열로 된 요소를 갖는 배열에서 요소들을 세로로 읽었을 때의 문자열을 반환하는 것이다. 입출력 예시를 보면, ['hello', 'wolrd']라는 배열을 입력받으면, 세로로 읽어 'hweolllrod'라는 값을 반환하는 것. 여기서 주의사항은, 모든 문자열의 길이가 동일한건 아니므로 만약 비어있는 건 무시한다. ['hi', 'wolrd']라는 배열을 입력받는다면, 'hwio'이후에는 hi뒤가 비어있다. 이럴 경우에는 무시하고 'lrd'가 오는 것이다. [ 풀이 ] 나의 로직은 다음과 같다. 1/ 먼저 가장 긴 문자열의 길이를 구한다. 2/ 그 문자열 길이만큼 반복문을 돌리고, 이중 반복문으로 입력받은 배열의 길이만큼 해당 인덱스의 문자열을 추..