본문 바로가기

분류 전체보기

(85)
연구소 [백준 14502번] 문제 https://www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net 내 풀이 1 combinations 사용하여 벽을 세웠다. 시간 : 700ms from collections import deque from itertools import combinations from copy import deepcopy N, M = map(int, input().split()) board, zero = [], [] for i in range(N): b = input().split()..
뱀 [백준 3190번] 문제 https://www.acmicpc.net/problem/3190 3190번: 뱀 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임 www.acmicpc.net 내 풀이 뱀을 deque로 만들었다. 2차원 배열로 보드를 만들어서 구현하는 방법도 있지만, 나는 뱀, 사과 위치를 담은 리스트, 방향 변환 명령을 담은 리스트를 가지고 구현을 하였다. 뱀의 꼬리가 잘리는 것을 deque의 맨 앞의 원소를 빼내는 것으로 구현하였다. from collections import deque N = int(input()) K = int(input()) apple = [] ..
주사위 굴리기 [백준 14499번] 문제 https://www.acmicpc.net/problem/14499 14499번: 주사위 굴리기 첫째 줄에 지도의 세로 크기 N, 가로 크기 M (1 ≤ N, M ≤ 20), 주사위를 놓은 곳의 좌표 x, y(0 ≤ x ≤ N-1, 0 ≤ y ≤ M-1), 그리고 명령의 개수 K (1 ≤ K ≤ 1,000)가 주어진다. 둘째 줄부터 N개의 줄에 지 www.acmicpc.net 내 풀이 삼성은 입력하는 것부터 코드를 짜야해서 조금 번거롭다. strip()와 split()를 야무지게 썼다. 먼저 주사위를 '동서남북'으로 굴렸을 때 모양이 어떻게 나올지부터 생각하였다. 그리고 [0, 1, 2, 3, 4, 5, 6]을 주사위의 [위쪽, 뒤쪽, 오른쪽, 왼쪽, 앞쪽, 아래쪽]으로 설정하였다. 주사위를 동쪽으..
알고리즘 어려워효 알고리즘은 해도 해도 어렵다. 머리가 굳은걸까. 아니면 아직 말랑말랑해지기 전인 걸까. 카카오 Lv3을 풀 때마다 허덕허덕거린다. 도대체 언제 느려고 그러냐~
불량 사용자 (Level 3) 문제 https://school.programmers.co.kr/learn/courses/30/lessons/64064 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내 풀이 user_id와 banned_id의 배열 크기가 작아서 O(n^2)으로 풀어야겠다고 생각했다. user와 banned를 비교한 후에 user가 banned와 길이가 같고 '*'을 제외한 나머지 문자들이 같으면 딕셔너리 dic에 user를 집어넣었다. 이렇게 함으로써 banned가 될 수 있는 user를 모았다. 이때 딕셔너리의 key는 인덱스로 하였는데, 그 이유는 처음부터 주어진 ..
자물쇠와 열쇠 (Level 3) 문제 https://school.programmers.co.kr/learn/courses/30/lessons/60059 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내 풀이 가장 먼저 든 생각은 "자물쇠를 확장하자"였다. 가로와 세로의 길이가 (N + 2*M - 2)인 확장된 자물쇠를 만들어야 한다. 확장된 자물쇠의 중앙에 원래 자물쇠가 있다고 가정했을 때, 자물쇠의 홈의 좌표를 lock_zero에, 자물쇠 돌기의 좌표를 lock_one에 저장하였다. 열쇠는 90도 회전이 가능하므로, 열쇠를 90도로 회전하는 함수 rotate를 만들어주었다. 그리고 열..
추석 트래픽 (Level 3) 문제 https://school.programmers.co.kr/learn/courses/30/lessons/17676 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 응답 완료 시간(end)에 처리시간(th)을 이용하여 시작시간(start)을 구하였다. 시간은 '시:분:초'로 구성되어있어서 정수형으로 바꿔주었고 특히 '초'는 소수점 셋째 자리까지 있으므로 소수점을 떼기 위해 1000을 곱하였다. 그리고 log 배열에 [start, end]를 추가하였다. 처리량은 log 배열을 돌면서 계산하였다. log의 원소를 x라고 할 때, x의 시작 시간과 x의..
다시 풀어야 할 문제 모음 카카오 Level 1, Level 2 문제들을 다 풀었고 (현재는 2022.08.05 (금)) , 다시 풀어야겠다고 생각했던 문제들을 엄선하였다. Level 1 신고 결과 받기 실패율 Level 2 양궁대회 k진수에서 소수 개수 구하기 순위 검색 문자열 압축 후보 키 괄호 변환 캐시 압축 총 27개의 문제 중 10개를 선정했다. 레벨만 보면 쉬울 것 같은데, 까 보면 결코 쉽지 않다. 이 문제들을 복습해서 '내 것'으로 만들 것이다. 반드시!