Algorithm/Programmers
[프로그래머스] 위장 /파이썬 /Python /해시
💡solutions ) ✅ clothes_dic이라는 딕셔너리 만들어서 종류별로 의사 개수를 카운트 단, 의상을 선택하지 않는 경우도 있으니 맨 처음 딕셔너리에 value값을 넣을 때는 +1 키워서 2를 저장 ✅ 마지막에는 모두 안 입은 경우 하나를 빼서 return 🎫code ) def solution(clothes): clothes_dic = {} cnt = 1 for i in clothes: tmp = i[1] if clothes_dic.get(tmp): clothes_dic[tmp] += 1 else: clothes_dic[tmp] = 2 for i in clothes_dic.values(): cnt *= i return cnt - 1 📌 description ) 문제출처 : https://pro..
[프로그래머스] 괄호변환 /파이썬 / Python /카카오블라인드
💡solutions ) ✅ 이번 문제는 수행해야 하는 모든 과정이 나와있는 시뮬레이션 문제. 주어진 것들만 꼼꼼히 잘 챙겨서 로직을 짜면 맞출 수 있는 문제 ✅ 총 3가지 함수를 구현 ①문제에서 주어진 과정을 수행할 solution 함수 ②균형 잡힌 문자열인지 판별하여 u, v 문자열로 분리할 isBalance 함수 ③올바른 문자열인지 판별할 isRight 함수 🎫code ) def solution(p): result = "" if p == "": return p # 전체가 올바른 괄호 문자열이면 elif isRight(p) == True: return p else: # u, v로 문자열 나누기 u, v = isBalance(p) # u가 올바른 괄호 문자열이면 if isRight(u) == True: ..
[프로그래머스] 멀쩡한 사각형 /파이썬 /python /최소공약수
💡solutions ) ✅ 공식을 못 찾겠어서 다른 분들 풀이를 참고했다. 대각선에 걸쳐지는 정사각형의 개수는 "w+h - (w*h - w와h의 최소공약수)" ✅ math 모듈을 사용해 최소공약수(gcb)를 구할 수도 있지만 직접 함수를 구현했다. 🎫code ) def solution(w, h): def getGcd(w,h): if (h == 0): return w return getGcd(h, w % h) return w * h - (w + h - getGcd(w, h)) 📌 description ) 문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/62048?language=python3 코딩테스트 연습 - 멀쩡한 사각형 가로 길이가 Wcm, 세..
[프로그래머스] 스킬트리 / 파이썬 / python
💡solutions ) ✅ 공백이 없는 문자열을 하나씩 끊어서 리스트 요소로 만들 때는 list(str) 사용하기 str = "abc", list(str) = ["a", "b", "c"] (단, 공백 있으면 split 사용) ✅ skill에 있는 것들만 모아서 tmp에 담고 skill리스트와 tmp리스트 값 비교하기 ✅ 길이가 같은 경우는 바로 cnt + 1, 다른 경우에는 첫 번째부터 값을 비교하기 -> 문제 푼 후에 skill 리스트의 pop(0)값 하고만 비교하면 된다는 걸 알았다. (맨 앞을 선행하지 않는다는 건, 결국 가능한 스킬트리가 아니기 때문) 🎫code ) def solution(skill, skill_trees): skill = list(skill) cnt = 0 for st in sk..
[프로그래머스] 오픈채팅방 / 파이썬 / python / 딕셔너리 배열
💡solutions_ ✅ 모든 유저의 닉네임을 저장하는 name_list 딕셔너리(key는 고유한 유저아이디로, value는 닉네임으로 저장), 유저들의 행동(입장, 퇴장)을 저장하는 action_list 리스트, 최종 결과 값을 저장하는 result 리스트 만듬 ✅ 각 입력값은 '행동 유저아이디 닉네임' 순으로 공백을 기준으로 split ! ✅ 두 가지 if문 ① 이름을 변경하는 경우인지 확인 -> enter, change -> name_list에 새로 이름 생성하거나 이름 변경하기 ② 들어오거나 나가는 경우인지 확인 -> enter, leave -> action_list에 행동 기록하기 🎫code_ def solution(records): name_list = {} action_list = [] re..
[프로그래머스] 소수찾기 / Python / 효율성 테스트
✔ 문제 설명 - 1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요. - 소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다.(1은 소수가 아닙니다.) ✔ 제한 조건 - n은 2이상 1000000이하의 자연수입니다. 아래는 처음 제출한 코드이다. 효율성 테스트에서 통과하지 못하고 시간초과. def solution(n): answer = 0 arr = [0] * (n+1) for i in range(2, n+1): if arr[i] == 1: continue for k in range(2, i+1): if i % k == 0: if i != k: arr[i] = 1 break else: answer += 1 for j in range(i, n+1, i)..
0308_프로그래머스 : 다리를 지나는 트럭(deque, queue)
블로그 오랜만ㅎㅎ 3일만에 돌아왔다. 이번에 도전한 문제는 프로그래머스의 다리를 지나는 트럭이다. 이거 해결하는데 꼬박 하루는 걸린 거 같다. 이 문제는 큐로 풀어야 하기 때문에 리스트 형태에서 pop(0)을 사용하는 것은 비효율적이라는 말을 들었다. 그래서 덱 구조를 사용해보았는데, 테스트케이스 10개 중 1개가 자꾸 시간초과가 뜨는 거다...하하 결국 시영쌤의 도움을 받아 간신히 극복했다. 항상 감사합니다 쌤 그럼 우선 푼 코드 공유 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 from collections import deque def solution(bridge_length, weight, truck_weights): answer = ..
0303_프로그래머스 : 완주하지 못한 선수_해시
이 문제는 해시 개념을 이용한 문제이다. 나도 이 문제를 풀기 전까지 해시가 뭔지 몰랐다. 그러니 먼저 해시의 개념부터 알고 가자. #해시함수 (Hash Function) 해싱이라는 것이 해시테이블 이라는 구조를 이용해 데이터 검색을 빨리할 수 있게 하는 기법. 해시를 통해 데이터를 빠르게 삽입, 삭제하고 가져올 수 있는데 쉽게 말하면 key-value 쌍으로 존재하는 자료형 구조인 것이다. '딕셔너리'를 떠올리면 굉장히 쉽다. 참고로 파이썬에서는 딕셔너리 타입이 있기 때문에 따로 해시 함수를 구현할 필요가 없다. [참고 용어] 해시함수: Key에 대해 산술 연산을 이용해 데이터(Value) 위치를 찾을 수 있는 함수 해시 : 임의 값을 고정 길이로 변환하는 것 해시 테이블: 키 값의 연산에 의해 직접 ..