본문 바로가기

분류 전체보기132

[백준] 10703 파이썬 - 유성 문제https://www.acmicpc.net/problem/10703 풀이첫번째 풀이 (틀린 풀이)공기층을 찾고, 해당 인덱스 위의 유성 층들을 모두 검사했다.완전탐색으로 풀이해서 시간초과가 났다. import sysimport pprintfrom copy import deepcopyinput = sys.stdin.readliner,s = map(int,input().split())meteor = [list(input().strip()) for _ in range(r)]# 공기층 index 구하기air_index = 0for i in range(len(meteor)): if meteor[i] == list('.' for _ in range(s)): air_index = ianswer .. 2024. 10. 9.
[프로그래머스] 파이썬 - 스킬트리 문제풀이skill이라는 스킬 순서가 주어진다.skill_trees에 있는 각 스킬트리에 대해, skill 스킬 순서를 지키고 있는지 확인하는 문제이다. 나는 다음과 같이 풀이했다. 1. dic이라는 딕셔너리를 선언한다. 이 딕셔너리에는 각 스킬에 대한 선행 스킬 정보를 저장한다.# 딕셔너리에 각 스킬 별 선행 스킬 저장for i in range(len(prev_skill)): dic[prev_skill[i]] = prev_skill[:i] 2. skill_trees의 각 스킬트리를 검사한다.이때 all_exist라는 bool 값을 두었다. 3. 스킬 트리의 각 스킬을 검사한다.나는 스킬트리의 맨 뒤 스킬부터 검사했다.  4. 해당 스킬(skill_tree[j])을 쓰기 위해 배워야하는 선행 스킬 리.. 2024. 10. 9.
[프로그래머스] 파이썬 - 모음사전 문제 풀이1. 모든 경우의 수 구하기from itertools import productdef solution(word): answer = 0 alphabet = ['A', 'E', 'I', 'O', 'U'] array = [] for i in range(1,6): for j in product(alphabet,repeat = i): array.append(''.join(j)) array.sort() return array.index(word)+1 product를 사용하여 1~5 길이의 모든 단어의 경우의 수를 구해주었다.이후 배열에서 word의 인덱스를 구해주고 1을 더해주면 답이 나온다. 2. dfsdef dfs(word,.. 2024. 10. 7.
[프로그래머스] 파이썬 - 점찍기 문제풀이처음 작성한 코드def solution(k, d): answer = 0 for i in range(0,d+1,k) : for j in range(0,d+1,k): if (i**2 + j**2)  문제 조건을 그대로 입력했다.k와 d의 제한사항이 각각 최대 백만이기 때문에, 이중 for문을 사용하면 안되는 문제였다. 따라서 아래 공식을 이용하여 j의 값을 구해주었다.피타고라스 정리에 의해 i² + j² = d² 이므로 (i는 x축, j는 y축, d는 최대 길이이다)j² = d² - i² 이다. 이 공식으로 j를 구한 후 j를 k로 나눈 정수 몫 + 1이 해당 i값이 x값일 때의 j값의 개수이다.  정답 코드def solution(k, d): a.. 2024. 10. 3.
[Study] 싱글톤 패턴 싱글톤 패턴이란?하나의 클래스가 오직 하나의 인스턴스만을 가지는 패턴이다.하나의 클래스를 기반으로 여러 개의 인스턴스(메모리에 할당된 객체)를 만들 수 있다.하지만 하나의 인스턴스만을 가지는 클래스를 통해 로직을 설계해야 하는 경우가 생길 수 있다. 싱글톤 패턴은 다음과 같은 상황에 많이 쓰인다.- 데이터베이스 연결 모듈- 게임 로직 설계 시 매니저 관리   싱글톤 패턴의 장점1. 인스턴스 생성 비용이 적다.하나의 인스턴스를 다른 모듈이 공유하며 사용하기 때문에, 추가적인 인스턴스를 생성하지 않아도 된다.따라서 인스턴스를 생성할 때 드는 비용을 절감할 수 있다.  싱글톤 패턴의 단점1. 의존성이 높아진다싱글톤 패턴을 사용하는 모듈간의 결합이 매우 높아진다.모듈간의 결합도가 높으면 한 클래스 수정하면 다른.. 2024. 10. 3.
[Study] 디자인 패턴 디자인 패턴이란?프로그램을 설계할 때 발생했던 문제점들을 객체 간의 상호 관계 등을 이용하여 해결할 수 있도록 하나의 규약 형태로 만들어 놓은 것 아래에 각 패턴에 대한 공부 내용을 하나씩 업로드 할 예정이다. 싱글톤 패턴 [Study] 싱글톤 패턴싱글톤 패턴이란?하나의 클래스가 오직 하나의 인스턴스만을 가지는 패턴이다.하나의 클래스를 기반으로 여러 개의 인스턴스(메모리에 할당된 객체)를 만들 수 있다.하지만 하나의 인스턴스만jeongeunji1127.tistory.com 팩토리 패턴 [Study] 팩토리 패턴팩토리 패턴이란?상속 관계에 있는 두 클래스에서 상위 클래스가 중요한 뼈대를 결정, 하위 클래스는 객체 생성에 관한 구체적인 내용을 결정하는 패턴이다.상위 클래스와 하위 클래스가 분리jeongeun.. 2024. 10. 1.
[프로그래머스] 파이썬 - 이모티콘 할인 행사 문제제한 사항  풀이# 각 이모티콘의 할인율에 대한 모든 경우의 수를 구하는 dfsdef dfs(temp, depth): global array percentage = [10,20,30,40] # 이모티콘의 개수 만큼 dfs가 돌았을 때 if depth == len(temp): # 얕은 복사를 통해 새로운 temp 생성 array.append(temp[:]) return for p in percentage: temp[depth] += p dfs(temp, depth + 1) temp[depth] -= p 각 이모티콘들은 10, 20, 30, 40의 할인율 중 하나의 할인율을 가질 수 있다.따라서 .. 2024. 10. 1.
[프로그래머스] 72411 파이썬 - 메뉴 리뉴얼 문제풀이문제를 보면 orders의 길이와 course의 길이가 매우 짧게 주어진다.따라서 모든 경우의 수(조합)을 구하여 해결할 수 있는 문제이다.단, 조합을 뽑은 후 반드시 정렬을 해서 딕셔너리에 넣어야 올바른 정답을 얻을 수 있다.  오늘 배운 것 딕셔너리 key값 탐색 if frequency[i] not in new_frequency.keys() 파이썬 딕셔너리에 값을 추가할 때 그동안은 위와 같이 key값들에 접근해서 이미 존재하는 키인지 확인해왔다. if i not in new_frequency그러나, in 키워드는 딕셔너리에서 기본적으로 키만 확인한다고 한다.따라서 new_frequency.keys()로 작성하지 않고 new_frequency로 적어도 동일하게 코드가 작동한다.위와 같이 작성하.. 2024. 9. 24.
[프로그래머스] 340212 파이썬 - 퍼즐 게임 챌린지 문제 풀이 문제 자체는 간단했다.난이도 배열을 돌며 현재 레벨보다 난이도가 낮을 때와 높을 때를 나누어 시간을 계산해주고,더한 시간이 limit보다 낮을 경우의 level의 최솟값을 구하면 되는 문제. 나는 난이도 배열을 돌며 시간을 계산하는 함수를 만들었고, 해당 함수에 level만 바꾸어 넣어주며정답을 구했다. 코드첫번째 (틀린) 코드시간초과가 난 코드이다def solution(diffs, times, limit): answer = 1 # 작은 수부터 level 설정해서 계산 while(True): if puzzle(answer,diffs,times,limit): break answer += 1 return answerd.. 2024. 9. 24.