반응형

분류 전체보기 316

리눅스의 기초 명령어 (1)

리눅스 / 우분투를 설치 완료했다면 기초 명령어를 다뤄보자. 터미널 열기 마우스 오른쪽 버튼을 누르면 Open in Terminal로 열 수 가 있다. (1) 관리자 계정으로 접속 기본적으로 일반, 관리자 계정이 존재하는데 파일의 구성과 내용을 만지작거릴려면 강력한 관리자 권한이 필요합니다. 따라서 관리자로 접속해야만 다양한 명령어를 쓸수 있습니다. 관리자 계정 접속 명령어는 sudo su root (필자는 그냥 '수도수' 로 외웁니다) 이 명령어를 치면 암호를 치는데 암호칠때 비밀번호는 안보입니다. (처음 보면 입력 안됫나 라고 착각합니다) (2) 기본 명령어 1) pwd ( Print Working Directory) : 현재 작업중인 디렉토리의 이름을 출력하는 명령어다. 2) cd (Change D..

리눅스 2022.03.17

리눅스/Linux (우분투/Ubuntu) 설치하기

우선 리눅스를 설치하기전에 리눅스가 뭔지는 알아야한다. 리눅스는 고급언어(사용자가 이해하기 쉬운 언어) 로 개발된 최초의 운영체제(OS)이다. 게다가 오픈소스 (방대한 라이브러리) 그리고 무료다! 운영체제가 주로 하는일 대표적으로 3가지 1.하드웨어 자원 관리 2.프로그램 실행 3.사용자 인터페이스 제공 이 3가지 운영체제 기능을 고급언어로 쉽게 다룰수 있고 무료라서 리눅스를 사용하는것이다. 유닉스는 이렇게 생겻다. 커널 운영체제의 핵심 컴퓨터 자원 관리 프로세스 관리, 메모리 관리 파일 시스템 관리, 장치 관리 쉘(shell) 사용자 인터페이스 제공 사용자의 명령을 입력 받아 처리한 후 결과를 출력 유닉스/리눅스의 특징 대화형 시스템 --- 명령어기반 인터페이스로 유닉스가 이해하는 명령어를 입력함 다중..

리눅스 2022.03.10

HTTP 표현 헤더

클라이언트가 요청할때 와, 서버가 응답하면서 보내는 HTTP의 모습이다. 표현 헤더는 표현데이터를 해석할 수 있는 정보를 제공한다. 표현 데이터는 말 그대로 본문이다. 표현 헤더의 종류 Content-Type: 표현 데이터의 형식 Content-Encoding: 표현 데이터의 압축 방식 Content-Language: 표현 데이터의 자연 언어 Content-Length: 표현 데이터의 길이 Content- Type은 표현데이터를 보낼 타입을 정의하거나 문자 인코딩을 정의한다. EX) • text/html; charset=utf-8 (utf-8로 인코딩함) • application/json (파일형태가 json 형태임) • image/png (이미지가 png 형태임) Content-Encoding: 표현데..

네트워크+HTTP 2022.03.09

HTTP 상태코드

상태 코드 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능 • 1xx (Informational): 요청이 수신되어 처리중 • 2xx (Successful): 요청 정상 처리 • 3xx (Redirection): 요청을 완료하려면 추가 행동이 필요 • 4xx (Client Error): 클라이언트 오류, 잘못된 문법등으로 서버가 요청을 수행할 수 없음 • 5xx (Server Error): 서버 오류, 서버가 정상 요청을 처리하지 못함 우리가 흔하게 보는 404 Not Found 같은 에러코드가 여기에 속한다. 즉, 클라이언트가 잘못요청해서 날아오는뜻이다. 만약에 모르는 상태코드가 나왔어도 세부적으론 몰라도 어느정도 추측이가능하다. 2xx 코드는 요청이 정상적으로 처리가 됨. 3xx 코드는 ..

네트워크+HTTP 2022.03.09

[프로그래머스,자바] Level2: 이진 변환 반복하기

문제분석 문제 목표: 1과 0으로 구성된 문자열을 조건에맞게 X번 적용할때 0이 지워진 갯수를 Y라할때 X 와 Y를 구하자. 조건: 1. 1과 0으로 된 문자열에서 0을 모두제거 2.제거된 문자열의 길이를 N 이라할때, N을 2진법으로 다시 표현 3. 윗 과정을 숫자 1이될때까지 반복 매우 쉬운문제다. 사고력없이 문제가 시키는대로만 하면 풀리는 문제다. 우선, 조건 1대로 문자열에서 0을 제거하는건 자바에선 replace("0" , "")를 사용한다. 그후, 제거된 문자열의 길이를 잰뒤, 2진법으로 바꾸는 로직을 시행한다. ->여기서 동시에 제거된 0의갯수를 세준다. ->또한, 조건을 적용할 카운트도 세준다. 이 과정을 1이될때까지 (While)반복시킨다. 그리고 마지막에 세준 X, Y값을 반환하면끝이다..

[프로그래머스,자바] Level2: 캐시

문제분석 이 문제같은경우는, 정보처리기사 지식을 요구하는 문제입니다. 혹여나 시험보다가 모르겠다하면 인터넷 검색하면 물론 나오긴합니다. 문제에서는 캐시 교체(페이지 교체)알고리즘인 LRU를 사용하라고 하엿습니다. LRU가 도대체 뭐길래? Least Resently Used로 가장 최근에 썻던걸 쓰겠다란 말인데.. 이걸 반대로생각하셔야합니다. 가장 최근에 있는걸 쓴다는건, 가장 안쓰는건 먼저 삭제가됩니다. 처음 문제를 접할때 또한 cache hit 과 cache miss입니다. cache miss란 주어진 캐시크기 안에 해당 정보가 없으면 Miss가 발생합니다. cache hit이란 주어진 캐시크기 안에 해당 정보가 있으면 Hit이 발생합니다. 즉, 캐시크기는 리스트의 사이즈입니다. 예시를 한번 보겠습니다..

[프로그래머스 , 자바] Level2: 주식가격

문제분석: 문제 목표 : 각 시간대별로 주식이 떨어지지않는 시간을 구하자 이 문제를 풀기에 앞서.... 이 문제는 스택/큐로 푸는게 맞습니다. 하지만 2중반복문으로 풀리는게 참으로 이상합니다. 사실 2중반복문으로 생각해서 푸는게 제일로 쉽습니다. 거의 Level1 수준으로 말이죠. 그냥 단순하게 1초일때 주식가격 을 n번 돌려서 깍이는 구간을 확인하고 2초일때 주식량을 n번 돌면서 깍이는 구간확인하고 3초일때 .... 하면 n^2걸려서 구합니다. 근데 문제제약을 보면 prices의 길이가 10만입니다. 최대 n^2이 걸리는 문제를 10만^2을 하면 무려 100억번입니다. 근데 이 문제가 2중반복문으로 구현하면 풀립니다. 심지어 효율성테스트도 스택보다 빠릅니다 (아니..대체 왜..??) 바뀐거 아닙니다. ..

[프로그래머스,자바] Level3: 추석 트래픽

문제분석 목표: 가장 작업이 겹치는 1초 구간 구하기 작업은 시작과 작업시간이 존재한다. 시작과 끝시간은 시간/분/초/밀리초 까지 존재한다. 필자의 첫접근은 시간/분/초/밀리초를 10진수로 변환한뒤, 1ms 증가시켜 시작점을 설정한뒤 시작점+1000ms(1초)구간까지 확인했다. 결과는 당연히 시간초과다. 사실 중간에 코딩하면서 눈치챗지만, 밀리초단위로 10진수로 변환한 수는 엄청나게크다.(약 100만) 이걸 100만*1000 반복시키면 당연히 시간초과가일어난다. -> 조금더 효율적인 접근이필요했다. 그래서 카카오 해설의 도움을 빌렸다. 카카오 해설의 대안은 1ms마다 탐색하지말고, 시작과 끝 경계선부분만 탐색해도 풀수있단겁니다. https://tech.kakao.com/2017/09/27/kakao-bl..

[프로그래머스,자바] Level2: 영어 끝말잇기

문제분석 목표 : 끝말잇기를 진행하여 탈락하는 사람의 차례와 번호를 출력하라 끝말잇기에 탈락하는 조건은 2가지입니다. 1. 이전에 나왔던 마지막글자의 끝말을 잇지 못할경우 2. 이제까지 나왔던 단어들을 중복으로 말할경우 이 2가지 경우중 하나일경우 탈락하게됩니다. 그리고 탈락할경우의 턴은 i/n +1을하면 출력이되며, 탈락한 사람의 번호는 i%n +1을하면 구할수있습니다. (i 는 word[]의 인덱스) P.s 자료구조를 몰라도 풀수있는 쉬운 Level2문제인것 같습니다. 문제풀이 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 import java.util.*; class Solution { public int[] solution(i..

[프로그래머스,자바] Level2: 삼각 달팽이

문제분석 목표: 삼각달팽이의 규칙에의해 새롭게 탄생한 배열 출력하기 문제의 규칙은 이렇다. 높이가 n이 주어지면, n만큼 내려온후 방향을 오른쪽으로 바꾼다. 그리고 n의 길이만큼 이동한뒤 왼쪽 대각선으로 바꾼다. ->이를 반복함 이를 배열과 코드로 표현해보면, 내려올때는 배열의 y값을 늘리면된다. arr[i][j] -> arr[i+1][j] 오른쪽으로 이동할때는 배열의 x값을 늘리면된다. arr[i][j]-> arr[i][j+1] 대각선 왼쪽으로 이동할때는 배열의 x,y를 하나씩 줄이면된다. arr[i][j]-> arr[i-1][j-1] 여기까지 알면 나머지는 쉽다. 만약 n이 4면 4만큼 내려오고 3만큼 오른쪽 2만큼 대각선 1만큼 내려온다. 만약 n이 5면 5만큼 내려오고 4만큼 오른쪽 3만큼 대각선..

반응형