만족은 하되 안주하지는 말자

기록해야 기억한다

프로그래밍 162

[python] 백준 3190번: 뱀

https://www.acmicpc.net/problem/3190 3190번: 뱀 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임 www.acmicpc.net 삼성 sw역량테스트 문제 테마 구현, 큐 설명 2차원 배열에서의 큐, 방향 전환, 인덱스 예외처리 등을 고려해서 풀어야 한다. 배운 것들 1. 모듈로 연산을 통한 Left,Right move 방향 전환. 2. Queue 를 이용한 꼬리 자르기. deque 의 appendleft 활용한 큐 복구 from sys import stdin from collections import deque def is_exc..

[python] 2차원 리스트 90도 돌리기

def rotated(array_2d): list_of_tuples = zip(*array_2d[::-1]) return [list(elem) for elem in list_of_tuples] # return map(list, list_of_tuples) 테스트 arr = [[1,2,3],[4,5,6],[7,8,9]] nm_arr = [[1,2],[3,4],[5,6]] print(rotated(arr)) print(rotated(nm_arr)) 위의 예시를 실행시키면 결과는 아래와 같다. 꼭 N^N 배열이 아니더라도 가능하다. 안경잡이개발자 "나동빈" 님의 리스트 90도 회전 코드 def rotated(a): n = len(a) m = len(a[0]) result = [[0]* n for _ in ra..

[python] 프로그래머스: 소수 찾기

https://programmers.co.kr/learn/courses/30/lessons/42839 코딩테스트 연습 - 소수 찾기 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 � programmers.co.kr 구현해야 할 것들 1. 소수 판별하는 함수 (is_prime) 2. 주어진 문자열의 요소들로 만들 수 있는 모든 숫자열을 구하기 (combination) 3. 가능한 소수의 경우의 수를 셈하기 (set) code from itertools import permutations def is_prime(num): if num == 1 or num =..

[python] 주어진 수가 소수인지 판별하기

def is_prime(num): if num == 1 or num == 0: return False else: n = int(num ** 0.5) for i in range(2, n + 1): if num % i == 0: return False return True 주어진 수 num에 대해 sqrt(num) 까지에 대해서만 검사하면, 이 num이 소수인지를 판별하는데에 문제가 없다. 이렇게 하면 큰 수에 대해 루프 시간을 num^0.5까지만큼 단축할 수 있다! 1과 0은 소수가 아니므로 제외한다.

[python] sort 를 할 때 2개의 key 를 서로 다른 순서로 정렬하기 (2 key 2 order)

문제정의 선거 후보자들의 득표수를 기록한 list 가 있다고 가정하자. list에는 (득표수, 후보자번호) 형태의 tuple 이 요소로 저장된다. EX) [(5,3),(5,2),(10,99),(10,1)] 위의 후보자 투표 합산 결과에서, 득표수가 많은 순서대로 출력하라. 만약, 득표수가 같은 후보가 있다면 빠른 번호를 가진 후보자를 먼저 출력하라 만약 단순 sort 로 정렬하게 된다면, tuple 의 첫번째 요소의 오름차순순으로 정렬되게 된다. [(5, 2), (5, 3), (10, 1), (10, 99)] 구해야 하는건, 많은 득표를 받은 후보를 번호의 오름차순순으로 정렬해야 한다. 즉, key 1 -> 내림차순 && key 2 -> 오름차순 으로 정렬해야 한다!! lambda 식을 이용해 2번의 정..

[python] 백준 1697번: 숨바꼭질

https://www.acmicpc.net/problem/1697 1697번: 숨바꼭질 문제 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 www.acmicpc.net 분류: BFS N 의 위치에서 K 까지 가는 최소의 이동 횟수를 구하는 문제. -1 , +1 , *2 의 3가지 경우가 가능하다. depth가 N일 때 전체 경우를 확인하는데에 O(N^3) 의 시간이 소요된다! 그래서 visited 배열을 통해 방문한 노드에 대해선 해당 노드 이후의 진행은 거부한다. 그 이유는 BFS 기 때문에, 이미 방문한 위치에 대해 다시 방문을 한..

[python] 백준 17135번: 캐슬 디펜스

https://www.acmicpc.net/problem/17135 17135번: 캐슬 디펜스 첫째 줄에 격자판 행의 수 N, 열의 수 M, 궁수의 공격 거리 제한 D가 주어진다. 둘째 줄부터 N개의 줄에는 격자판의 상태가 주어진다. 0은 빈 칸, 1은 적이 있는 칸이다. www.acmicpc.net 분류: 브루트포스/구현 문제 규칙 N*M 격자판에 N+1번째 행에 궁수 3명을 배치 할 수 있다. 배치가 끝나면, 격자에 배치된 적들과 궁수 사이 거리가 D 이하일 경우, 가장 가까운거리의 적을 궁수는 화살을 쏴 죽인다. 이 때, 궁수들은 적을 동시에 쏠 수도 있다. 만약 D이하 가장 가까운 적이 여러 명이면 가장 왼쪽의 적을 쏜다. 궁수 3명의 화살쏘기가 1번진행되면, 적들은 N+1의 성을 향해 1칸씩 전..