전체 글 219

[Python] 프로그래머스 이모티콘 할인행사

1. 문제 - 프로그래머스 할인행사https://school.programmers.co.kr/learn/courses/30/lessons/150368 ✅ 풀이모든 이모티콘마다 모든 할인률을 적용하여 케이스를 따지면 된다.users의 길이는 최대가 100, 할인율은 10/20/30/40으로 4개, emotion의 길이는 7개이므로 완전탐색이 가능하다. def solution(users, emoticons): answer = [] discount_list = [10, 20, 30, 40] # 할인율은 10, 20, 30, 40으로 설정 combinations = [] # 각 이모티콘 별 모든 할인률 조합 def dfs(arr, depth): if len(..

[Python] 백준 5052, 프로그래머스 성격 유형 검사하기, 백준 13459

1. 문제 - 백준 5052 전화번호 목록https://www.acmicpc.net/problem/5052 ✅ 내 풀이from collections import defaultdictt = int(input())for _ in range(t): dic = defaultdict(int) words = set() # 15번째 줄에서 단어 찾을떄 시간복잡도 줄이기 위해 set 사용 (탐색 -> O(1)) flag = False n = int(input()) for _ in range(n): number = input() words.add(number) # 단어들 set에 추가 for i in range(1, len(number)+1): # 가능한 모든 ..

[Python] 프로그래머스 기둥과 보 설치

1. 문제 - 프로그래머스 기둥과 보 설치https://school.programmers.co.kr/learn/courses/30/lessons/60061 ❌ 틀린 풀이- 테스트 케이스는 통과하는데 제출했을 때 테스트 6, 7만 통과함import copydef solution(n, build_frame): board = [[-1] * (n+1) for _ in range(n+1)] def isValid(board): for i in range(n+1): for j in range(n+1): if board[i][j] == 0: # 기둥일 경우 # 바닥 위에 있거나 보의 한쪽 끝 부분 위에 ..

[Python] 프로그래머스 가장 많이 받은 선물, 달리기 경주, 주차 요금 계산

1. 문제 - 프로그래머스 가장 많이 받은 선물 https://school.programmers.co.kr/learn/courses/30/lessons/258712 ✅ 풀이from collections import defaultdictdef solution(friends, gifts): present_count = defaultdict(int) dic1 = defaultdict(dict) # 선물을 준 기록 딕셔너리 (value는 {받은 사람: 선물 준 횟수} ) dic2 = {} # 각 프렌즈마다 준 선물, 받은 선물 갯수를 기록하는 딕셔너리 --> 이후 선물지수 계산 for friend1 in friends: for friend2 in fr..

[Python] 백준 2206, 백준 14442 (벽 부수고 이동하기 1, 2)

1. 문제: https://www.acmicpc.net/problem/2206최단 경로를 구하는 BFS이되 벽을 부순 여부를 매번 같이 탐색해야하므로,visited는 x, y, 벽 부순 여부의 상태를 가진 3차원 배열로 설계하고, 큐는 x, y, 벽 부순 여부의 상태를 가진 것으로 설계한다. ✅ 풀이from collections import dequen, m = map(int, input().split())dx = [-1, 1, 0, 0]dy = [0, 0, -1, 1]board = []INF = int(1e9)for _ in range(n): board.append(list(map(int, list(input()))))visited = [[[INF] * 2 for _ in range(m)] for _..

[Python] 백준 11559, 프로그래머스 프렌즈4블록, 백준 13460

1. 문제: https://www.acmicpc.net/problem/11559해당 문제는 그래프탐색 (영역) + 시뮬레이션 문제이다.최단거리를 구하는게 아닌, 영역을 만들고 터뜨리는게 목적이므로 DFS와 BFS 모두 가능하다. ✅ DFSboard = []dx = [-1, 1, 0, 0]dy = [0, 0, -1, 1]answer = 0for i in range(12): board.append(list(input()))def down(): # 터지면 중력에 의해 다른 뿌요가 나올떄까지 떨어짐 for y in range(6): for i in range(10, -1, -1): for x in range(11, i, -1): # 아래가 바닥이고, 위에가 뿌요일 경우 ..

[Swift] 백준 15683, 14503

1. 문제: https://www.acmicpc.net/problem/15683✅ 풀이import Foundationlet readline = readLine()!.split(separator:" ").map { Int($0)! }let (n, m) = (readline[0], readline[1])var board:[[Int]] = []let dx = [1, 0, -1, 0]let dy = [0, 1, 0, -1]// 우 하 좌 상 순서 offset 배열var answer = Int.maxvar cctvs:[(Int, Int)] = []for i in 0.. Bool { // 유효한 좌표 내에 있는지 판단하는 함수 return 0 - 해당 문제의 핵심은 모든 cctv의 모든 방향의 조합을 어떻..

[Swift] 백준 1913, 프로그래머스 베스트앨범

1. 문제: https://www.acmicpc.net/problem/1913✅ 풀이let n = Int(readLine()!)!let m = Int(readLine()!)!var arr = Array(repeating: Array(repeating: 0, count: n), count: n)// 하우상좌 오프셋 (달팽이가 회전하면서 수가 채워지는 순서)let dx = [1, 0, -1, 0]let dy = [0, 1, 0, -1]var dir = 0var num = n * nvar x = 0, y = 0var targetX = 0, targetY = 0while num > 0 { arr[x][y] = num if num == m { // 문제에서 찾고자하는 target의 좌표 저장 ..

반응형