본문 바로가기

환영합니다. 이 블로그 번째 방문자입니다.

Python/문제풀이

  (8)

[➕ 오답노트] 백준 1697번 👇🏻 문제 https://www.acmicpc.net/problem/1697 1697번: 숨바꼭질 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net 메모리 초과가 난 문제, 메모리를 정해 큐와 시간 배열을 함께 사용하는 문제 나는 이렇게 두 가지 자료구조를 한 번에 사용하는 데에 머리가 안 돌아가는 것 같다. 굳이? 라는 느낌이 들면 무조건 _ _ _ 초과가 뜬다. 인터넷에 널려있는 정답 코드지만 이유가 있겠지... 자료형의 크기에 주의하자. import sys from collections import ..
[➕ 오답노트] 백준 7576번 배열 BFS 👇🏻 문제 https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 배열 자료구조의 DFS는 많이 풀어봤지만, BFS는 처음이다. 그래서 못 풀었다 ㅎ import sys from collections import deque M, N = map(int, sys.stdin.readline().strip().split()) tomato = [list(map(int, sys.stdin.readline().strip().split())) for..
[➕ 오답노트] 백준 11478번 👇🏻 문제 https://www.acmicpc.net/problem/11478 11478번: 서로 다른 부분 문자열의 개수 첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000 이하이다. www.acmicpc.net 간단하지만, 시간초과와 싸워야 하는 문제이다. 나는 당연히 2중 포문을 사용해서 코드를 작성했지만, 항상 공개되어 있는 정답코드와 비교해보곤 한다. # Nesty Code : 508ms import sys str = sys.stdin.readline().strip() combi = {} for i in range(1,len(str)+1): for j in range(len(str)-i+1): combi[str[j:j+i]]=0 print(len(combi..
[ ➕ 오답노트] 백준 17298번 오큰수 👇🏻 문제 https://www.acmicpc.net/problem/17298 17298번: 오큰수 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다. www.acmicpc.net 스택이란 이렇게 쓰는 거지를 알려주는 문제 같다. 스택에 인덱스를 넣어서 비교하는 방법과 스택에 값과 인덱스를 함께 넣어서 비교하는 방법이 있다. 나는 후자가 더 이해가 잘 가서 후자로... import sys A = int(sys.stdin.readline()) data = list(map(int, sys.stdin.readline().split())) answer = [-1] * A stack..
[ ➕ 오답노트] 프로그래머스 해시 - 베스트앨범 아... 이 문제... 실패했다...ㅎ 미련 없이 해답을 보기로..! 👇🏻 문제 https://programmers.co.kr/learn/courses/30/lessons/42579 코딩테스트 연습 - 베스트앨범 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 programmers.co.kr 정답 코드 def solution(genres, plays): answer = [] d = {e:[] for e in set(genres)} for e in zip(genres, plays, range(len(plays))): d[e[0]].append([e[1] , e[2]]) ..
[2021 KAKAO 블라인드 채용] 메뉴 리뉴얼 👇🏻 문제 https://programmers.co.kr/learn/courses/30/lessons/72411 코딩테스트 연습 - 메뉴 리뉴얼 레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서 programmers.co.kr 이 문제로 정말 애를 좀 먹었다. 로직은 대충 알겠는데 막상 구현에서 쩔쩔맸다. 그 이유는 다음과 같다. 조합을 구현하는데에 무한 loop 에 빠졌다. 재귀함수 잘못 짠... 파이썬에 combinations가 있었던 걸 알았다면, 더 편하게 짰을 것 같다. 나의 로직은 다음과 같다. 1. course의 반복문을 돌며 orders의 원소들을 일일히 검사한..
[2] 백준 13458번: 시험감독 { 문제 } https://www.acmicpc.net/problem/13458 13458번: 시험 감독 첫째 줄에 시험장의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 각 시험장에 있는 응시자의 수 Ai (1 ≤ Ai ≤ 1,000,000)가 주어진다. 셋째 줄에는 B와 C가 주어진다. (1 ≤ B, C ≤ 1,000,000) www.acmicpc.net { 40분 무코딩 로직 사고} 나눗셈 문제 결과 : 2분 문제 이해 + 4분 문제 로직 생각 { 코드 구현 } import math N = int(input()) A = list(map(int, input().split())) B, C = map(int, input().split()) judges = [0 for i in ran..
[1] 백준 12100번: 2048 (Easy) { 문제 } https://www.acmicpc.net/problem/12100 12100번: 2048 (Easy) 첫째 줄에 보드의 크기 N (1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수는 2 www.acmicpc.net { 30분 노코딩 로직 사고 } 1. [입력] N 입력 ➡ board[N][N] 배열 0 초기화 ➡ board_check[N][N] 배열 0 초기화 ➡ board 원소 입력 2. [비교] board 행의 같은 수 연속이 많은지, 열의 같은 수 연속이 많은지 비교하는 함수 작성 행의 수가 연속하는 경우 & 0을 끼고 같은 수가 있는 경우, row_check[..