개발 공부/알고리즘 문제 풀이

[Programmers- LEVEL2] 문자열 압축, 오픈채팅방, 멀쩡한 사각형

sunjungAn 2022. 3. 16. 00:58

 

문자열 압축


https://programmers.co.kr/learn/courses/30/lessons/60057

 

코딩테스트 연습 - 문자열 압축

데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문

programmers.co.kr

def solution(s):
    
    if(len(s)==1):
        return 1
    min_length = 1001
    for i in range(1, len(s)//2+1):
        new_str = ""
        cnt = 1
        si = s
        tmp = si[:i]
        si = s[i:]
        while len(si):
            content = si[:i]
            si = si[i:]
            if(tmp == content):
                cnt = cnt+1
            else: 
                if(cnt != 1):
                    new_str+=(str(cnt))
                new_str+=tmp
                tmp = content
                cnt = 1
        if(cnt!=1):
            new_str += (str(cnt))
        new_str+=tmp
        
        if(len(new_str)<min_length):
            min_length = len(new_str)
        
    return min_length

 

 

 

오픈채팅방


https://programmers.co.kr/learn/courses/30/lessons/42888

 

코딩테스트 연습 - 오픈채팅방

오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오

programmers.co.kr

def solution(record):
    dict ={}
    result = []
    
    for str in record:
        data = str.split()
        first = data[0].strip()
        if first == 'Enter' or first == 'Change':
            dict[data[1].strip()] = data[2].strip()
    

    for str in record:
        data = str.split()
        first = data[0].strip()
        if first == "Enter":
            temp = dict[data[1].strip()]
            temp += "님이 들어왔습니다."
        elif first == "Leave":
            temp = dict[data[1].strip()]
            temp += "님이 나갔습니다."
        else:
            continue
        result.append(temp)
        
    return result

 

멀쩡한 사각형


https://programmers.co.kr/learn/courses/30/lessons/62048

 

코딩테스트 연습 - 멀쩡한 사각형

가로 길이가 Wcm, 세로 길이가 Hcm인 직사각형 종이가 있습니다. 종이에는 가로, 세로 방향과 평행하게 격자 형태로 선이 그어져 있으며, 모든 격자칸은 1cm x 1cm 크기입니다. 이 종이를 격자 선을

programmers.co.kr

import math
def solution(w,h):
    return (w*h) - (w+h - math.gcd(w,h))