SW Academy

[CNU SW Academy] 29일차(23.01.10)

narlo 2023. 1. 10. 17:42

장진수교수님 - 리눅스

운영체제(OS)

- CPU, Memory, I/O device들을 관리하는 프로그램

- 다른 컴퓨터와 통신을 할 수 있게 도와주는 역할

- access control(접근제어)

- 실행중인 프로세스를 관리

- HW에 접근할 수 있는 인터페이스를 제공

 

리눅스(Linux)

- pc 기반 운영체제

- UNIX(서버용) => 개인용으로 만든 것이 Linux

 

GNU(GNU'S Not Unix)

- 자유 소프트웨어

- 소스코드를 다운받아 자유롭게 실행할 수 있다는 장점

 

Kernal

- File Management

- IPC(Inter process Communication)

- CPU Scheduler

- Process Management

- Primary and Secondary Storage Management

 

가장 상위 디렉토리 : root ( / )

/bin/ : 중요한 command들이 저장되어있는 폴더

/dev/, /proc/ : 시스템 관련 파일들이 저장되어있는 폴더

 

권한

user, group, others

read, write, execute

 

리눅스 명령어

pwd : 현재 어떤 폴더에 있는지 출력해줌

touch 파일명 : 빈 파일 생성

mkdir : 새 디렉터리 생성

 

Absolute paths(절대경로) : root에서 시작

Relative paths(상대경로) : 현재위치에서 시작

#주석

 

cd : 디렉터리 변경

cd ~ : home으로 이동

cd / : root로 이동

 

cp : copy file / directory

ex) cp sample_file.txt dir1 => sample_file.txt를 dir1으로 복사해라

cp -a dir dir1_copy => -a : attributes를 모두 보존하면서 디렉터리를 복사

 

ls : 디렉터리 안의 컨텐츠 확인

 

mv : move, 이동 or 이름 변경

 

rm : remove, 파일이나 디렉터리 삭제

rm -r : 하위까지 모두 삭제

rm -i : 파일마다 삭제를 해도 되는지 확인을 받겠다

 

echo "Hello World" > readwrite.txt

> : 내용이 들어갈 때 파일이 존재하지 않으면 새로 생성, 존재했다면 기존 내용을 모두 지우고 삽입

>> : 기존 파일의 내용을 유지하면서 가장 뒤에 덧붙임

 

cat : 파일 내용을 읽을 때 사용


실습

vi editor

vi 파일명


프로그래머스 - 프론트엔드 미니 데브코스

고양이사진첩 만들기

API 연결


코딩테스트

Umm 문자열 1

import re
p = re.compile('^Umm+$')
t = int(input())
for i in range(t):
    n = int(input())
    s = input()
    a, b = map(int, input().split(" "))
    target = s[a-1:b]
    match = p.search(target)
    if match is None:
        print('NO')
    else:
        print('YES')

정규표현식을 이용해 쉽게 해결할 수 있었다.

 

Umm 문자열 2

t = int(input())
for i in range(t):
    n, m = map(int, input().split(" "))
    s = input()
    dp = [0] * n
    result = 0
    for j in range(n):
        if s[j] == 'U':
            dp[j] = 1
        elif s[j] == 'm':
            if dp[j-1] > 0:
                dp[j] = dp[j-1] + 1
    for j in range(m):
        a, b = map(int, input().split(" "))
        if dp[a-1] == 1 and dp[b-1] >= 3 and dp[b-1] == (b-a+1):
            result += 1
        else:
            result += 0
    print(result)

Umm 문자열1 처럼 풀었더니 효율을 따지는 테스트케이스에서 시간초과가 발생했다.

dp를 이용하여 해결하였다.

'SW Academy' 카테고리의 다른 글

[CNU SW Academy] 32일차(23.01.13)  (0) 2023.01.13
[CNU SW Academy] 31일차(23.01.12)  (0) 2023.01.12
[CNU SW Academy] 28일차(23.01.09)  (0) 2023.01.09
[CNU SW Academy] 12.14 보강  (0) 2023.01.08
[CNU SW Academy] 27일차(23.01.06)  (0) 2023.01.06