상봉동개발자

프로그래머스 2문제 오픈채팅방, 멀쩡한 사각형 본문

코테준비

프로그래머스 2문제 오픈채팅방, 멀쩡한 사각형

상봉동개발자 2022. 6. 28. 23:43
728x90

오픈채팅방

  • 사이트/난이도: 프로그래머스/2단계
  • 코드
def solution(record):
    answer = []
    dict = {}
    
    for r in record:
        r_split = r.split()
        if len(r_split) == 3: # Enter, Change
            dict[r_split[1]] = r_split[2]
        
    for r in record:
        r_split = r.split()
        if r_split[0] == "Enter":
            answer.append(dict[r_split[1]]+"님이 들어왔습니다.")
        elif r_split[0] == "Leave":
            answer.append(dict[r_split[1]]+"님이 나갔습니다.")
                    
    return answer
  • 느낀점) 처음 풀때 그냥 리스트의 스택으로만 생각해서 너무 오래걸렸고, 시간 효율성에서 통과하지 못했다. 파이썬의 dict를 사용하면 key-value 값으로 매칭되기때문에 uid를 키로하고 nickname을 value로 하면 Enter와 Change 때 O(N)만으로 uid와 nickname을 매칭시킬수 있다! 너무 오랜만에 풀어서 dict 쪽 쓸 생각을 아예 못했디. 꾸준히 풀어야 겠다!

멀쩡한 사각형

  • 사이트/난이도: 프로그래머스/2단계
  • 코드
import math

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

 

  • 느낀점) w = 8, h = 12 일떄 그래프는 y=3/2x 이고 x:(2, 4, 6, 8) y:(3, 6, 9, 12) 일때 점 4개를 지나므로 최대공약수는 4다. 그리고 이 패턴에서 갈라지는 사각형이 w+h-gcd(w,h) 이다. 패턴 찾으려고 노력했는데 찾기 개힘들다… 수학적으로 생각해야되는데 1x1 사각형만 계속그리다가 결국 못풀었다…. 더 연습해야겠다! 이런 수학문제는 공식화 하는게 중요한것 같다. 여기서 키포인트는 좌표평면으로 놓고 그래프로 생각하는 것과 최대공약수로 생각하는것!
728x90

'코테준비' 카테고리의 다른 글

이코테 - 이진탐색 2문제  (0) 2022.07.05
네이버 트랙 공채 코테 2022  (0) 2022.07.02
파이썬 빠르게 입력받기  (0) 2022.07.01
Coop, Coup  (0) 2021.09.12
코테준비 시작  (0) 2021.08.29
Comments