전체 글 106

기능 개발

while progresses:로 묶고 for 문을 돌려 progress[i] += speed[i]를 해준 뒤 progresses[0]이 100 이상이라면 progresses[0]을 포함해 그 뒤에 것들까지 요소의 값이 100 이상인 것을 찾고 해당 요소를 pop()하는 식으로 문제를 풀었다. def solution(progresses, speeds): answer = [] while progresses: for i in range(len(progresses)): progresses[i] += speeds[i] if progresses[0] > 99: res = 0 while progresses and progresses[0] > 99: res += 1 progresses.pop(0) speeds.pop..

파이썬 list(), split()

split(구분자, 자를 횟수) 문자열을 쪼개서 list로 반환해주는 함수다. 구분자 없이 보내면 빈칸을 기준으로 자르고 자를 횟수를 입력하지 않으면 자를 수 있는 만큼 최대로 자른다. a = "a b c d e" b = "a.b.c.d.e" print(a.split()) # 빈 칸을 기준으로 최대로 자른다. # ['a', 'b', 'c', 'd', 'e'] print(a.split(" ", 1)) # 빈칸을 기준으로 한 번만 자른다. # ['a', 'b c d e'] print(b.split()) # 빈칸을 기준으로 최대로 자른다 # 빈칸이 없으므로 변화가 없다. # ['a.b.c.d.e'] print(b.split(".")) # 점(.)을 기준으로 최대한 자른다. # ['a', 'b', 'c', 'd..

파이썬 2022.07.01

파이썬 내장 함수 - map, zip

map map(function, iterable) map은 함수와 iterable을 받아 iterable의 각 요소를 함수에 넣은 결과를 묶어서 리턴해준다. s = "abcde" _map = map(str, s) _map_lambda = map(lambda x: x * 2, s) map_list = list(_map) map_lambda_list = list(_map_lambda) print(_map) # print(_map_lambda) # print(map_list) # ['a', 'b', 'c', 'd', 'e'] print(map_lambda_list) # ['aa', 'bb', 'cc', 'dd', 'ee'] zip zip(*iterable) 여러 iterable 자료형을 하나로 묶어준다. a_..

파이썬 2022.06.30

파이썬 for 문

파이썬의 for문 종류와 사용법에 대해 알아보자. for in for item in iterable: ...... 위와 같이 사용하는 것을 for in이라 한다. item은 iterable의 원소를 차례대로 가져온다. list, dictionary, set, string tuple, bytes 등이 iterable 타입이다. iterable인지 아닌지를 확인은 isinstance 함수를 사용하여 확인하면 된다. * isinstance(a_list, collections.Iterable) ~> True isinstance(a_int, collections.Iterable) ~> False 예시 a_list = [1, 2, 3, 4, 5] for item in a_list: print(item) # 1 # ..

파이썬 2022.06.30

음수 나머지 연산

어떤 수 n을 m으로 나누었을 때 몫이 q이고 나머지가 r이면 n = m*q + r이다. 따라서 어떤 수를 나누었을 때 몫과 나머지는 위의 식만 지키면 된다. 7을 3으로 나누면 2.3333...... 이 된다. C언어의 경우 이 소수점 뒤의 수를 '버림'을 하여 2가 되고 Python의 경우 '내림'을 해서 2를 만든다. 식은 다음과 같다. 7 = 3*2 + 1 양의 나눗셈을 할 때는 몫이 둘 다 2로 같은 반면, 음수 나눗셈을 하면 두 언어는 다른 몫을 도출해낸다. 7을 -3으로 나누면 -2.3333...... 이 된다. C언어의 경우 이 소수점 뒤의 수를 '버림'을 하므로 몫은 -2가 된다. 이를 식으로 표현하면 다음과 같다. 7 = -3*-2 - 1 Python의 경우 -2.3333...... 을..

124 나라의 숫자

숫자를 오직 1, 2, 4로만 표현하는 나라가 있다 10진수 n이 주어졌을 때 n을 124 나라의 숫자로 변환한 결과를 리턴하시오. 124 나라의 숫자는 모든 숫자를 세 개로만 [1, 2, 4] 표현한다는 점이 삼진법[0, 1, 2]과 같다. 하지만, 0보다 큰 자연수 n을 각자의 표현 방식으로 나타낼 때 삼진법의 맨 앞자리에는 0이 올 수 없지만 124 나라의 수는 맨 앞자리에 1이 올 수 있다. ex) 길이가 2인 124 나라의 수 중 가장 작은 수는 [1, 2, 4]의 1을 활용한 11이지만, 삼진수 중 가장 작은 수는 [0, 1, 2]의 0을 활용한 00이 아니라 10이다. 십진수 삼진수 124나라의 수 1 1 1 2 2 2 3 10 4 4 11 11 5 12 12 6 20 14 7 21 21 8..

멀쩡한 사각형( 파이썬 ) - 프로그래머스

격자 칸 1cm x 1cm로 이루어진 사각형이 주어져있고 해당 사각형의 대각선 꼭짓점 2개를 잇는 선이 그어질 때 선이 지나지 않는 1cm x 1cm 격자 칸의 개수를 구하는 문제이다. 8x12 직사각형에서 대각선이 지나는 격자의 개수를 반으로 나눠서 생각하면 (4x8 직사각형에서 대각선이 지나는 격자의 개수) x 2와 같고 이것을 또 반으로 나눠서 생각하면 (2x3 직사각형에서 대각선이 지나는 격자의 개수) x 4와 같다. 2와 3을 공통으로 나누는 2 이상의 자연수는 없으므로 2와 3은 서로소이고 8과 12를 서로소로 만든 수 4는 8과 12의 최대 공약수이다. 더보기 * a와 b를 c로 나누었을 때의 결과가 서로소라면 c는 a와 b의 최대 공약수임 따라서 전체 사각형에서 두 꼭짓점을 잇는 대각선이 ..

python 문자열 replace()

"문자열".replace()는 문자열에서 특정 문자를 다른 문자로 바꾸는 함수이다. 변경된 복사본을 리턴하며 원본은 바뀌지 않는다. 사용은 아래처럼 하면 된다. str.replace(old_str, new_str) str.replace(old_str, new_str, cnt) old_str은 해당 문자열에서 바꾸고 싶은 문자이고 new_str은 old_str을 뭘로 바꿀 것인지를 가리킨다. 마지막으로 cnt는 옵션으로 입력하지 않으면 모든 old_str에 해당되는 글자를 new_str으로 바꾸고 숫자를 입력하면 입력한 수만큼만 변환을 수행한다. 아래는 replace() 함수를 사용한 예제이다. s1 = "abc_abc_abc" s2 = s1.replace("abc", "!!!") # 원본은 바뀌지 않음 ..

파이썬 2022.06.22

이미지는 어디에 저장해야 할까

웹 서비스를 만들다 보면 이미지를 저장해야 할 때가 오는데 이미지는 어디에 저장해야 될까요? 얻어갈 지식 이미지 저장은 어디에? 이미지 저장 웹 서비스를 만들다 보면 이미지를 저장해야 될 순간이 옵니다. 이미지는 아래 그림 1)에 있는 3가지 장소에 각각 저장할 수 있습니다. 각각의 장단점을 알아봅시다. * Program은 서버, Storage는 파일 시스템, Database는 데이터 베이스라고 칭하겠습니다. 파일 시스템에 저장 이미지는 파일 시스템에 저장하고 데이터 베이스에는 해당 파일의 URL이나 파일 이름만 저장하는 방법입니다. 보통 파일 시스템은 데이터 베이스에 비해 값이 저렴하므로 같은 용량의 이미지를 저장할 때 데이터 베이스에 비해 경제적이며 데이터 베이스에 이미지를 저장하는 경우보다 작업을 ..

RDB 2022.06.22

DFS와 BFS - 파이썬 구현

DFS, BFS에 대해 알아보자 얻어갈 지식 DFS, BFS DFS( Depth-First Search : 깊이 우선 탐색) 깊이 우선 탐색은 그래프에서 한 루트로 더 이상 내려갈 곳이 없을 때까지 검색한 뒤 옆으로 이동하여 다른 루트를 검색하는 방식이다. 보통 한없이 깊이 검색하는 것을 방지하기 위해 깊이 제한을 사용한다. 깊이 제한에 도달할 때까지 목표 노드가 발견되지 않으면 가장 최근 노드의 부모 노드로 되돌아와서, 이전과는 다른 노드를 선택한다. 여기서 부모 노드로 되돌아오는 과정을 백트리킹이라 한다. 장점 단지 현 경로상의 노드만을 기억하면 되므로 저장공간의 수요가 비교적 적다. 목표 노드가 깊은 단계에 있을 경우 해를 빨리 구할 수 있다. 단점 해가 없는 경로에 깊이 빠질 가능성이 있다. 따라..