본문 바로가기
반응형

🍃 Language54

[Python] 문자열 애너그램(Anagrams) | Counter(), DefaultDict() 이 문제를 풀다가 애너그램을 찾는 방법에 대해서 정리해본다. 풀이를 하며 Counter를 이용한 방법과 DefaultDict를 이용한 방법 2가지를 배웠다. 요구사항 우선 문제의 요구사항을 정리해보면 이렇다. 애나그램 : 첫번째 문자열을 재배열했을때 두번째문자열이 되면, 두개의 문자열들은 애나그램 쌍이라고 칭한다. 두 문자열을 구성한 알파벳이 같아야하고, 그 알파벳들의 frequency도 같아야함 ex: bacdc와 dcbac는 애나그램 ex: bacdc와 dcbad는 애나그램이 아니다.(문자열길이는 다를수도 있음) 두개의 문자열을 애나그램으로 만들기 위해 필요한 최소문자 삭제수는? ex : a=cde, b=dcf 1.a에서 e삭제 2.b에서 f삭제 a=cd, b=dc -> 애나그램 리턴값 : 2 즉, .. 2021. 7. 12.
[Python] 커스텀한 기준으로 sort()하기 cmp_to_key() 이문제를 풀다가 알게된 새로운함수 python내용 list.sort() 의 key 파라미터로 lambda 함수를 넘겨 주어, element의 정렬 조건을 설정했다. 그러니까 lambda에 정렬기준을 '직접' 입력한 것이다. 예를들어 튜플의 1번째 글자를 기준으로 내림차순 정렬한다고 하면 이렇게 x[1]을 정렬기준으로 지정해줬다. arr = [(1, 2), (2, 3), (1, 3), (2, 4), (3, 4)] arr.sort(key=lambda x: x[1], reverse=True) # 튜플 1번째 값으로 정렬 print(arr) 앞서 한번 정리한적있다. lambda로 sort하는 방법. https://pearlluck.tistory.com/462 [Python] 람다식, lambda로 sorted .. 2021. 7. 12.
[python] 대문자로 변환하기 upper() / capitalize() / title() 해커랭크 이 문제를 풀다가..대문자로 변환하는 upper()만 알고 있어서 조금 헤맸는데 알고보니까 capitalize() 를 알고 있으면 완전 쉬운 문제였다..! 그래서 이번엔 대문자로 변환하는 함수들을 정리해보려고 한다. 대문자로 변환하는 메소드 upper() : 모든알파벳을 대문자로 변환 capitalize() : 맨 첫글자만 대문자로 변환 title() : 알파벳 외의 문자(숫자, 특수기호, 띄어쓰기 등)로 나누어져 있는 영단어들의 첫 글자를 모두 대문자로 실제로 확인해보았다. A='abcd' print(A.upper()) #ABCD print(A.capitalize()) #Abcd print(A.title()) #Abcd B='a2b3c4' print(B.upper()) #A2B3C4 print.. 2021. 7. 11.
[python] 정규표현식과 Re모듈함수(match/search/findall/fullmatch) 정규표현식(Regular Expression) 정규표현식을 지원하기 위해 표준모듈 re 사용 원하는 문자열 패턴을 정의하여, 소스문자열과의 일치여부 판단 정규표현식을 왜 쓰는걸까? 파이썬 문자열에서 기본적으로 in,find(),index() 같은 함수로 문자열이 존재하는지, 어느위치에 있는지 알려준다. 하지만 문자열안에 정수만 추출하고 싶다면 문자열에서 제공하는 함수만으로 한계가 있다. 이때 정규표현식 사용 re모듈 함수 match(패턴,문자열) : 문자열의 처음부터 시작해서 작성한 패턴이 일치하는지 확인 import re print(re.match('a','ab')) # print(re.match('a','ba')) #None search(패턴,문자열) : 문자열 안에 작성한 패턴이 일치하는지 확인, .. 2021. 7. 5.
[python] String을 식으로 반환해주는 eval() 함수 eval(표현식) 매개변수로 받은 String형식의 expression(식)을 실행결과로 반환하는 함수 즉, 하나이상의 값으로 표현될 수 있는 코드를 바로 값으로 반환해주는 함수이다. 예를 들어 eval("1+2") : 1+2 자체가 expression이지만 그 결과값인 3을 반환한다. eval("abs(-8)") : 절대값을 반환해주는 abs표현식의 결과인 8을 반환한다. 보통 input()처럼 간단한 입출력을 실행할때, 문자열을 식으로 입력해서 해당식의 실행결과값을 반환할때 쓰인다. 표현식이 문자열타입인데도 불구하고 eval()을 사용하면 그대로 연산값을 얻을 수 있는 편리함이 있다. x=eval(input("문자열을 입력하세요")) print(x) //입력한 문자 하지만, 사용자가 마음대로 프로그램.. 2021. 6. 22.
[Python] 순열(permutations )과 조합(combinations) 딱 정리 product('ABCD', repeat=2) AA AB AC AD BA BB BC BD CA CB CC CD DA DB DC DD permutations('ABCD', 2) AB AC AD BA BC BD CA CB CD DA DB DC combinations('ABCD', 2) AB AC AD BC BD CD combinations_with_replacement('ABCD', 2) AA AB AC AD BB BC BD CC CD DD 출처 https://docs.python.org/ko/3/library/itertools.html 순열 (permutations) 서로다른 n개에서 r개를 선택할때 순서를 고려하여, 중복없이 뽑을 경우의 수 nPr = n! / (n-r)! 예를 들어, A B C.. 2021. 5. 26.
[Python] 파이썬 enumerate 활용법 | for문을 파이썬스럽게 enumerate 대부분 for루프를 돌면서 인덱스 변수를 증가시킨다. 하지만 파이썬에선 enumnerate()라는 내장함수를 이용해서 이런 인덱스 변수 없이 반복문을 돌릴 수 있다. 파이썬스러운 함수중에 하나이다. 인덱스와 원소를 동시에 접근하면서 루프를 동시에 돌릴 수 있기때문에 사용법-일반for문 for in : 목록은 리스트,튜플,문자열,반복자 등 순서가 있는 모든 데이터타입에 해당한다. 원소는 흔히 루프변수라고 불리는 것. 그래서 목록부분에 넘긴 객체가 담고 있는 원소들이 루프가 도는동안 하나씩 차례로 할당이 된다. 예를 들어 3개의 글자를 담은 리스트를 대상으로 루프를 돌면 각각 글자를 출력한다 또는 리스트의 인덱스와 같이 출력하고 싶다면 이렇게 range(len(리스트))를 가지고 출력한다... 2021. 5. 26.
[Python] 문자열찾기 | find/startswith/endswith startswith startswith는 문자열이 특정문자로 시작하는지 여부를 알려준다 사용법 문자열(s). startswith('시작하는문자') : 문자열s가 시작하는 문자로 시작하니? True/False 문자열(s). startswith('시작하는문자', 위치) : 해당위치의 문자열s가 시작하는 문자로 시작하니? True/False 예시 참고로, 대소문자도 구별이 된다 find(찾을문자, 찾을위치) find는 문자열 중에 특정 문자를 찾고 위치를 반환해준다. 없을 경우 -1리턴 사용법 문자열(s). find(찾을문자) : 문자열s에서 찾을문자가 있는 위치를 반환 예시 문자열의 인덱스도 0부터 시작해서 첫단어인 H를 찾고자 할때, 찾을 위치는 0을 반환한다. k는 존재하지 안항서 -1를 반환한다 end.. 2021. 5. 25.
[Python] zip으로 index랑 values를 합쳐서 dict만든다 zip 마치 옷의 지퍼(zipper)처럼 두 그룹의 데이터를 서로 엮어주는 파이썬의 내장 함수 사용법 for 변수 in zip(객체1, 객체2) 여러 개의 순회 가능한(iterable) 객체들을 인자로 받고, 각 객체가 담고 있는 원소를 튜플의 형태로 차례로 접근할 수 있는 반복자(iterator)를 반환한다 예시 만약, zip을 사용하지 않았다면 이런식으로 각각 인덱스 변수를 사용해야 했겟지. 응용 zip을 사용하면 여러개의 리스트들을 dict로 쉽게 만들 수 있따 주의사항 단, zip()함수로 넘기는 인자의 길이가 다를때는 가장 짧은 인자를 기준으로 데이터가 엮이고 나머지는 버려진다. 출처 https://www.daleseo.com/python-zip/ 2021. 5. 25.
[Python] 람다식, lambda로 sorted key 정하기 Lambda 함수 이름없는 함수, 람다표현식을 익명함수(anonymous function) 함수를 따로 선언하지 않고, lamba식으로 대체함 예를 들어 매개변수 x에 10을더한 값을 반환하는 함수를 만든다고 하면 사용법 이렇게 할텐데 이렇게 간단한 식일때는 lambda함수로 코드를 한줄로 줄일 수 있따. 이렇게 간단하게 표현하면 뭐가 좋은가? 코드가 간단해질 뿐만 아니라 메모리를 덜 잡아먹는다. 원래 함수를 선언하면 그 함수자체를 메모리에 할당하는데 lambda함수를 쓰면 한번만 사용하고 사라지기 때문에 메모리를 효율적으로 쓸 수 있다. 응용 람다를 언제 사용하면 될까? 내가 자주 본 것은 sorted()함수를 사용할 때이다. 정렬하는 기준을 잡을때 lambda를 가지고 변형한 값 만든 후, 이 값을 .. 2021. 5. 25.
728x90