[PYTHON/파이썬] Level2 [1차]캐시 - LRU/deque/maxlen https://school.programmers.co.kr/learn/courses/30/lessons/17680 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr LRU 알고리즘 페이지 부재가 발생했을 경우 가장 오랫동안 사용되는 페이지를 제거하는 알고리즘 캐시 크기가 정해져 있고 캐시 크기 만큼 페이지를 받고 그 이상의 페이지를 받을때 만약 동일한 값이 있다면 가장 최신 값으로 변경 동일한 값이 없다면 가장 오래된 값을 제거하고 새로운 값을 넣는다. 문제 풀이 빈 스택을 만들어 도시를 하나씩 넣는다. 스택의 크기는 최대 캐시 크기이다. 만약 스택에 동일한..
[PYTHON/파이썬] level 2 괄호회전하기 - deque https://school.programmers.co.kr/learn/courses/30/lessons/76502 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 문자열을 최대 문자열 길이까지 순차적으로 회전시켰을 때, 올바른 괄호 문자열이 되게 하는 x의 개수를 구하는 문제 soltuion - 성공 from collections import deque # 올바른 문자열인지 확인하는 함수(올바른 문자열이면 1를 올바르지 않다면 0을 반환함) def is_bracket_str(target_str): bracket = {'(':')','{':'}',..
썸네일 [PYTHON/파이썬] 2563 색종이 https://www.acmicpc.net/problem/2563 2563번: 색종이 가로, 세로의 크기가 각각 100인 정사각형 모양의 흰색 도화지가 있다. 이 도화지 위에 가로, 세로의 크기가 각각 10인 정사각형 모양의 검은색 색종이를 색종이의 변과 도화지의 변이 평행하도록 www.acmicpc.net 문제 풀이 크기가 1인 사각형은 4개의 좌표로 구성된다. 기준 좌표를 하나 정하고 그 좌표의 개수를 세서 크기를 구한다 (=> solution1 -sum으로 구하기) 또는 중복되지 않은 좌표의 개수를 구한다.( => solution2 - set으로 구하기) solution1-sum으로 구하기 import sys n = int(sys.stdin.readline().strip()) # 크기가 100*10..
썸네일 [PYTHON/파이썬] 1764 듣보잡 - Counter/Filter/setdefault https://www.acmicpc.net/problem/1764 1764번: 듣보잡 첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. www.acmicpc.net 문제 풀이 듣도 못한 사람과 보도 못한 사람의 리스트를 저장한다. Counter 모듈을 이용해 중복된 개수를 딕셔너리로 받는다. 중복된 개수가 1 이상인 key값만 리스트에 저장하고 그 리스트의 길이을 출력한다. 리스트를 정렬하여 한 줄씩 출력한다. solution - 성공/ Counter와 filter를 활용한 풀이 from collections import Counter import sys ..
썸네일 [PYTHON/파이썬] Level2 행렬의 곱셈 - 3중 for문 / zip https://school.programmers.co.kr/learn/courses/30/lessons/12949 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 안녕하세요 맨덕입니다. 오늘은 프로그래머스에서 행렬의 곱셈을 풀어봤습니다. 오랜만에 행렬의 곱셈을 하려다보니 제가 푸는 방식이 맞는지 헷갈렸습니다.. : ) 그래서 행렬의 곱셈의 공식부터 정리하겠습니다. 행렬의 곱셈 문제풀이 원소 하나씩 인덱스로 접근하여 계산합니다. solution - 성공 def solution(arr1,arr2): # [[0, 0], [0, 0], [0, 0]] result ..
썸네일 [PYTHON/파이썬] 2738 행렬 덧셈 https://www.acmicpc.net/problem/2738 2738번: 행렬 덧셈 첫째 줄에 행렬의 크기 N 과 M이 주어진다. 둘째 줄부터 N개의 줄에 행렬 A의 원소 M개가 차례대로 주어진다. 이어서 N개의 줄에 행렬 B의 원소 M개가 차례대로 주어진다. N과 M은 100보다 작거나 같 www.acmicpc.net solution - 성공 import sys N,M = map(int, sys.stdin.readline().strip().split()) one_matrix = [list(map(int, sys.stdin.readline().strip().split())) for _ in range(N)] # [[1, 1, 1], [2, 2, 2], [0, 1, 0]] two_matrix = [l..
썸네일 [PYTHON/파이썬] 10250 ACM호텔 - zfill() 0으로 자릿수 채우는 법 https://www.acmicpc.net/problem/10250 10250번: ACM 호텔 프로그램은 표준 입력에서 입력 데이터를 받는다. 프로그램의 입력은 T 개의 테스트 데이터로 이루어져 있는데 T 는 입력의 맨 첫 줄에 주어진다. 각 테스트 데이터는 한 행으로서 H, W, N, 세 정수 www.acmicpc.net 문제 풀이 h를 이용해 푼다. 층은 n를 h으로 나눈 나머지이다. 만약 나누어 떨어진다면 그대로 h를 반환한다. 호수는 n을 h로 나눈 몫에 1를 더한 값이다. 만약 나누어 떨어진다면 그대로 몫을 반환한다. solution - 실패/출력형식 import sys T = int(sys.stdin.readline().strip()) for _ in range(T): h,w,n = map(i..
썸네일 [파이썬/PYTHON] 1251 단어나누기 https://www.acmicpc.net/problem/1251 1251번: 단어 나누기 알파벳 소문자로 이루어진 단어를 가지고 아래와 같은 과정을 해 보려고 한다. 먼저 단어에서 임의의 두 부분을 골라서 단어를 쪼갠다. 즉, 주어진 단어를 세 개의 더 작은 단어로 나누는 것이다 www.acmicpc.net 문제 풀이 주어진 입력값을 3개의 단어로 나눈다. 3개의 단어를 각각 뒤집고[::-1] 다시 합치어 빈 리스트에 추가한다. 리스트를 정렬하고 젤 첫번째 요소를 출력한다. soltuion - 성공 import sys word = sys.stdin.readline().strip() new_word_list = [] for i in range(1,len(word)): for j in range(i+1,l..
썸네일 [PYTHON/파이썬] 1526 가장 큰 금민수 - while https://www.acmicpc.net/problem/1526 1526번: 가장 큰 금민수 첫째 줄에 N이 주어진다. N은 4보다 크거나 같고 1,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 문제풀이 버튼을 두고 True/False을 왔다갔다 하며 while을 제어한다. 버튼을 킨 상태로 시작(button = True) wihle문 시작 N을 문자열로 바꾸고 하나씩 4와 7이 모두 없는지 확인한다. 없으면 버튼을 끈다.(button = False) n을 하나씩 감소한다.(조건에 맞는 n을 찾기위해) 버튼을 끄지 않은 상태로 N이 성립되면 N을 출력하고 while문을 종료한다. soltuion - 성공 import sys N = int(sys.stdin.readline().s..
썸네일 [PYTHON/파이썬] 7568 덩치 -filter https://www.acmicpc.net/problem/7568 7568번: 덩치 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩 www.acmicpc.net 7568 덩치 문제 풀이 덩치가 크다의 조건 몸무게가 더 많이 나가고 키가 더 커야 한다. 두 가지 조건을 동시에 만족 시키는 사람들의 수를 계산하고 +1를 해준다. solution - 성공 import sys n = int(sys.stdin.readline().strip()) data =[list(map(int,sys.stdin.readline().strip().split())) f..
썸네일 [PYTHON/파이썬] 1063 킹 https://www.acmicpc.net/problem/1063 문제풀이 킹이 움직일 수 있는 키워드를 딕셔너리로 방향을 저장한다. 킹의 위치와 돌의 위치를 인덱스 번호로 바꾼다. 조건에 성립하면 위치를 이동한다. 체스 범위 안에 위치해야하고 킹의 이동할 위치가 돌의 위치면 돌은 킹의 방향만큼 이동한다. 단, 돌이 체스 범위 안에 위치할때만 조건이 성립하면 인덱스 번호를 다시 체스판에 맞게 출력한다. soltuion1 - 시도/성공 delta = { 'R':(1,0), 'L':(-1,0), 'B':(0,1), 'T':(0,-1), 'RT':(1,-1), 'LT':(-1,-1), 'RB':(1,1), 'LB':(-1,1) } # 입력값을 행렬 인덱스로 바꿔주는 함수 def change_matrix_poi..
썸네일 [PYTHON/파이썬] 4963 섬의 개수 - DFS https://www.acmicpc.net/problem/4963 4963번: 섬의 개수 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스의 첫째 줄에는 지도의 너비 w와 높이 h가 주어진다. w와 h는 50보다 작거나 같은 양의 정수이다. 둘째 줄부터 h개 줄에는 지도 www.acmicpc.net 문제 풀이 입력받은 행렬 요소가 순회를 통해 1인 값을 찾고 카운트해준다. 그리고 그 요소를 dfs함수로 행렬 요소가 1인값을 탐색한다. 먼저 매개변수로 받은 값을 0으로 값을 업데이트한다. 이유: 그 다음 순회에서 다시 중복해서 탐색하지 않기 위해서 상하좌우+대각선의 요소들을 탐색한다. 상하좌우+대각선이 1이면 그 해당 요소의 상하좌우+대각선 요소를 탐색한다. 카운트 값을 출력한다. sol..