본문 바로가기

내일 배움 캠프/TIL

TIL) 6주차 2일

 

오늘은 프로젝트 주에 못한 알고리즘을 푸는 시간을 가졌다.

 

다른 팀원에 비해 많이 못풀어서 오늘 내일은 

 

알고리즘을 열심히 풀 생각이다!

 

인상 깊었던 풀이 몇가지를 뽑아 봤다

 


프로그래머스
https://school.programmers.co.kr/learn/courses/30/lessons/120850
문자열 정렬하기(1)

나는 이문제를 보고 '문자들을 뺀 나머지들을 리스트 형식으로 넣어주면 되지 않을까?' 라는 생각이 들었고 모듈의 사용 없이 알고리즘적인 사고로 풀기를 원해서 try-except 구문을 떠올렸다.

def solution(my_string):
    answer = []
    
    for a in my_string:
        try:
            answer.append(int(a))
        except ValueError:
            my_string.strip(a)
    
    answer.sort(reverse=False)
    return answer

이처럼 for문으로 my_string을 받아와 하나씩 answer에 정수형으로 넣어주고 만약 문자가 있어 정수형으로 변환을 못시키고 ValueError 가 나오면 except구문에서 strip() 함수를 이용해 my_string에서 그 문자를 빼주는 형식으로 진행하였다.

 

다른 팀원분들의 코드:

# 지현님 코드
 def solution(my_string):
     answer = []
     for value in my_string:
         if value.isdigit() == True:
            answer.append(int(value))
     return sorted(answer)
     
# 엘리사님 코드
def solution(my_string):
    answer = []
    for x in my_string:
        if x.isdigit():
            answer.append(int(x))
    return sorted(answer)
    
# 상빈님 코드-1
def solution(my_string):
    answer = []
    for i in list(my_string):
        if i.isalpha() == False:
            answer.append(int(i))
            answer.sort()
    return answer
    
# 상빈님 코드-2
import re

def solution(my_string):
    return [int(n) for n in sorted(re.findall(r'\d', my_string))]

 


프로세스
스레드

1. 프로세스

  • 프로그램이 실행되는 곳
  • 각각의 프로세스는 영향을 받지 않는다. ( = 프로세스끼리는 자원을 공유하지 않는다 )

2. 스레드

  • 하나의 프로세스의 실행 흐름으로서의 구성요소
  • 스레드는 다른 스레드에 영향이 갈 수 있다. ( = 스레드는 프로세스의 자원을 공유한다 )

3. 예제

def foo():
    print('child process', os.getpid())
    
if __name__ == '__main__':
    print('parent process', os.getpid())
    child1 = Process(target=foo).start()
    child2 = Process(target=foo).start()
    child3 = Process(target=foo).start()

실행해보면 process는 같은 함수라도 서로 영향을 받지 않기 때문에 pid가 다 다른것을 알 수 있다. 하지만 스레드 같은 경우엔 다르다.

 

def foo():
    print('process id', os.getpid())
    
if __name__ == '__main__':
    print('process id', os.getpid())
    thread1 = threading.Thread(target=foo).start()
    thread2 = threading.Thread(target=foo).start()
    thread3 = Process(target=foo).start()

thread1과 thread2 의 pid는 같으나, thread3같은 경우엔 Process를 통해 만들기때문에 pid가 다른것을 확인 할 수 있다.

'내일 배움 캠프 > TIL' 카테고리의 다른 글

TIL) 6주차 4일  (0) 2023.04.24
TIL) 6주차 3일  (0) 2023.04.21
TIL) 6주차 1일  (0) 2023.04.18
TIL) 5주차 5일  (0) 2023.04.15
TIL) 5주차 4일  (0) 2023.04.14