프로그래머스 파이썬 기초 트레이닝 :: 단순연산(+ * < >) 문제 모음

        







    문제들 

    Day-23 (5) 날짜 비교하기

    Day-24 (4) l로 만들기



    단순연산

    대소비교 < , >

    리스트, 문자열 추가 +, *





    ------------------------------------------------



    Day-23 (5) 날짜 비교하기

    문제 설명 

    정수 배열 date1과 date2가 주어집니다. 두 배열은 각각 날짜를 나타내며 [year, month, day] 꼴로 주어집니다. 각 배열에서 year는 연도를, month는 월을, day는 날짜를 나타냅니다.

    만약 date1이 date2보다 앞서는 날짜라면 1을, 아니면 0을 return 하는 solution 함수를 완성해 주세요.


    date1                 date2                result

    [2021, 12, 28]            [2021, 12, 29]             1

    [1024, 10, 24]            [1024, 10, 24]             0


    날짜로 이뤄진 리스트를 대소비교 해야하는 문제 



    일반 코드 

    내가 처음에 푼 방식 

    def solution(date1, date2):
        for i in range(0,3) :
            if date1[i] < date2[i] : return  1     
            elif date1[i] > date2[i] : return 0 
        return 0 


    년도, 월, 일을 일일이 비교해서 날짜를 비교하는 코드를 작성했다. 

    그런데, 리스트끼리 비교가 가능하다. 



    int 대소비교 

    리스트간 대소비교 연산자를 넣으면, 위와 같은 방식으로 작동한다. 

    def solution(date1, date2):
        return int(date1 < date2)


    리스트1 < 리스트2 이렇게 대소비교를 하면 

    첫번째 요소끼리 차례대로 비교하고, 만약 같지 않은 부분에서 대소를 판단한다. 

    True / False로 리턴되기 때문에 int형변환을 해주는 것 



    ------------------------------------------------



     

    Day-24 (4) l로 만들기

    문제 설명 

    알파벳 소문자로 이루어진 문자열 myString이 주어집니다. 알파벳 순서에서 "l"보다 앞서는 모든 문자를 "l"로 바꾼 문자열을 return 하는 solution 함수를 완성해 주세요.


    myString             result
    "abcdevwxyz"     "lllllvwxyz"
    "jjnnllkkmm"     "llnnllllmm"



    내가 쓴 코드

    in 멤버연산자로 체크하고, 리스트에 추가해 문자열로 join

    def solution(myString):
        myList = list(myString)
        for i in range(len(myList)) : 
            if myList[i] in "abcdefghijk": 
                myList[i] = 'l'
        return ''.join(myList) 


    나는 하나하나의 값이 myList[i] in "abcdefghijk" 에 해당되는지 아닌지로 체크를 했다.

    그런데, 알파벳도 단순한 대소비교로 해결이 가능하다. 



    알파벳 대소비교

    알파벳 자체로 대소비교 

    def solution(myString):
        answer = ''
        for i in myString:
            if i < "l": answer+='l'
            else: answer+=i
        return answer

    i < "l" 로 알파벳이 l보다 큰지 작은지 체크가 가능하다. 


    알파벳 - 간결 version

    def solution(myString):
        return ''.join(x if x > 'l' else 'l' for x in myString)



    ord(char) 숫자로 변환을 해서 비교도 가능하다.

    ord(char) 숫자로 대소비교 

    def solution(myString):
        answer = ''
        for x in myString:
            if ord(x)< ord("l"):
                answer+="l"
            else:
                answer+=x
        return answer

    ord(x) < ord('l') 로 알파벳이 l보다 큰지 작은지 체크가 가능하다. 


    ord(char) 간결 version

    def solution(myString):
        return ''.join(['l' if ord(i) < ord('l') else i for i in myString])



    str.translate, maketrans

    replace 메서드를 여러번 수행해야하는걸 한번에 처리해주는 메서드와 함수다.

    def solution(myString):
        return myString.translate(str.maketrans('abcdefghijk', 'lllllllllll'))


    str객체.translate(table) 

    이 table을 만드는 함수인 str.maketrans(x [, y [, z]]) 

    maketrans로 테이블을 만들때 3번째 매개변수는 삭제를 의미함. 







    댓글

    이 블로그의 인기 게시물

    KT 에이블스쿨 : 6-7차 미니프로젝트 - 제안서 기반 솔류션 기획 및 설계

    KT 에이블스쿨 : 핀테크 아이디어 공모전

    [KT 에이블스쿨 - IT 트랜드] 국내외 AI 관련 규제