파이썬 8

파이썬 - 순열, 조합

순열과 조합 순열(Permutation)과 조합(Combination)은 수학과 컴퓨터 과학에서 사용되는 용어로, 집합에서 원소들을 조합하여 새로운 집합을 만들거나, 원소들을 순서에 따라 배열하는 것을 말합니다. 순열(Permutation)은 원소들의 순서에 의미를 두어, 순서에 따라 배열하는 것을 말합니다. 예를 들어, 3개의 원소 A, B, C를 가지고 만들 수 있는 순열은 AB, BA, AC, CA, BC, CA 등 6개의 경우가 있습니다. 조합(Combination)은 원소들의 순서가 중요하지 않고, 순서와 무관하게 조합을 만들어 내는 것을 말합니다. 예를 들어, 3개의 원소 A, B, C를 가지고 만들 수 있는 조합은 AB, AC, BC 총 3개의 경우 가 있습니다. 순서가 달라져도(예를 들어 ..

파이썬 2023.04.19

가장 긴 부분 회문 찾기 palindrome

회문이란 왼쪽부터 읽는 것과 오른쪽부터 읽는 것이 같은 문자를 뜻한다. ex) 기러기, 토마토, aba, abba, aa, a 등등... 가장 긴 부분 회문이란 "babad"에서 "bab"와 "aba"이고 "cbbd"에서 "bb"이다. 회문의 특성을 생각해보면 회문 안에 회문이 있다는 것을 찾을 수 있다. 이를테면, "cabbac"는 "abba"를 포함하고 있고 "abba"는 "bb"를 포함하고 있으며 "bb"는 "b"를 포함하고 있다. 이를 보면 다음과 같은 생각을 가질 수 있다. 1. 양쪽 끝에 있는 문자들이 서로 같고 2. 양쪽 끝에 있는 문자를 제외한 글자가 회문이면 3. 해당 글자는 회문이다. (ex. "abba"일 때 1. 양쪽 끝에 있는 문자들이("abba") 서로 같고 2. 양쪽 끝에 있는..

기능 개발

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

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