Algorithm 28

[Programmers] 프린터 (Swift)

문제 : https://programmers.co.kr/learn/courses/30/lessons/42587 코딩테스트 연습 - 프린터 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린 programmers.co.kr 1. 문제 이해하기 대기목록에 있는 문서의 중요도 배열(priorities), 요청한 문서의 현재 위치(location)가 주어졌을 때, 요청한 문서가 몇 번째로 인쇄되는지 구하기 대기목록 배열 크기 1 이상 100 이하 인쇄 작업의 중요도는 1 ~ 9이며 클수록 중요하다. 2. 문제 풀이 생각하기 처음에는 문서의 위치와 우선순위를 해시 테이블로 만드려고 ..

Algorithm/Swift 2021.07.26

[Programmer] 짝지어 제거하기 (Swift)

문제 : https://programmers.co.kr/learn/courses/30/lessons/12973 코딩테스트 연습 - 짝지어 제거하기 짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙 programmers.co.kr 1. 문제 이해하기 문자열이 주어졌을 때, 연속한 두 문자가 동일하면 제거하고, 제거 한 부분을 다시 앞 뒤로 이어주는 과정을 반복합니다. 이때, 모든 문자열이 제거되면 1, 하나라도 남아있으면 0 문자열의 길이는 1 이상 1,000,000 이하의 자연수 2. 문제 풀이 생각하기 문자열의 길이가 최대 1,000,000이 될 수 있기 때문에 ..

Algorithm/Swift 2021.07.16

[Programmers] 오픈채팅방 (Swift)

문제 : https://programmers.co.kr/learn/courses/30/lessons/42888 코딩테스트 연습 - 오픈채팅방 오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오 programmers.co.kr 1. 문제 이해하기 문자열 배열 형태로 각 문자열의 첫 번째 단어는 입장, 퇴장, 변경, 두 번째는 유저 아이디, 세 번째는 닉네임이 저장되어 있습니다. 모든 record를 수행하고 나서, 변경이 있다면 변경된 닉네임을 기준으로, 최종적으로 오픈 채팅방에 출력되는 문자열 배열 출력 record는 1 이상 100,000 이하 입출력 예시를 보면 확실히 문..

Algorithm/Swift 2021.07.13

[백준 12100] 2048(Easy) (Python)

문제 : https://www.acmicpc.net/problem/12100 12100번: 2048 (Easy) 첫째 줄에 보드의 크기 N (1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수는 2 www.acmicpc.net 1. 문제 이해하기 1 0 : 북, 1 : 남, 2 : 서, 3 : 동 from itertools import product import sys, copy input = sys.stdin.readline n = int(input()) g = [list(map(int, input().split())) for _ in range(n)] totalCase = lis..

Algorithm/Python 2021.07.11

[백준 8911] 거북이 (Python)

문제 : https://www.acmicpc.net/problem/8911 8911번: 거북이 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 컨트롤 프로그램이 주어진다. 프로그램은 항상 문제의 설명에 나와있는 네가지 명령으로만 이루어져 www.acmicpc.net 1. 문제 이해하기 좌표 위에 거북이가 움직인 지점을 모두 포함하는 가장 작은 직사각형의 넓이 구하기 F : 한 눈금 앞으로, B : 한 눈금 뒤로, L: 왼쪽으로 90도 회전, R: 오른쪽으로 90도 회전 선분의 경우 넓이는 0 입력으로 테스트 케이스의 개수만큼의 테스트 케이스 결괏값을 출력하기 2. 문제 풀이 생각하기 방향을 조정하는 L, R이 있기 때문에 방향과 현재 좌표를 저장해야겠다고 생각..

Algorithm/Python 2021.07.10

[백준 1292] 쉽게 푸는 문제 (Python)

문제 : https://www.acmicpc.net/problem/1292 1292번: 쉽게 푸는 문제 첫째 줄에 구간의 시작과 끝을 나타내는 정수 A, B(1 ≤ A ≤ B ≤ 1,000)가 주어진다. 즉, 수열에서 A번째 숫자부터 B번째 숫자까지 합을 구하면 된다. www.acmicpc.net 1. 문제 이해하기 1부터 연속하는 숫자가 숫자의 개수만큼의 집합이 있습니다. (ex. 1 2 2 3 3 3 4 4 4 4...) 입력으로 구간의 첫 번째와 마지막 번째가 주어질 때, 구간에 속하는 숫자의 합을 출력 두 숫자는 1 이상 1000 이하 2. 문제 풀이 생각하기 연속된 숫자의 숫자 개수만큼의 1에서 1000까지 만들었습니다. (1000번째가 1000은 아닙니다.) 배열의 슬라이싱을 통해서 새로운 배..

Algorithm/Python 2021.07.10

[Programmers] 행렬 테두리 회전하기 (Swift)

문제 : https://programmers.co.kr/learn/courses/30/lessons/77485 코딩테스트 연습 - 행렬 테두리 회전하기 6 6 [[2,2,5,4],[3,3,6,6],[5,1,6,3]] [8, 10, 25] 3 3 [[1,1,2,2],[1,2,2,3],[2,1,3,2],[2,2,3,3]] [1, 1, 5, 3] programmers.co.kr 1. 문제 이해하기 rows(행), columns(열)이 주어지고 (row x columns) 크기의 행렬에 좌에서 우로 1부터 숫자가 순서대로 적혀있습니다. queries가 2차원 배열로 주어지고, 각 query에는 [x1, y1, x2, y2] 형태로 저장되어 있습니다. 이는 x1 행 y1열부터 x2 행 y2 열까지의 영역에 해당하..

Algorithm/Swift 2021.07.10

[Programmers] 로또의 최고 순위와 최저 순위 (Swift)

문제 : https://programmers.co.kr/learn/courses/30/lessons/77484 코딩테스트 연습 - 로또의 최고 순위와 최저 순위 로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호 programmers.co.kr 1. 문제 이해하기 로또는 총 1~ 45까지의 숫자 중 6개 찍어서 맞추는 방식 로또 당첨 숫자(win_nums), 내가 찍은 숫자(lottos)가 주어졌을 때, 당첨 내용에 부합할 수 있는 가장 높은 순위와 낮은 순위를 배열로 출력 알아볼 수 없는 숫자(0)가 존재 2. 문제 풀이 생각하기 먼저 0이 아닌..

Algorithm/Swift 2021.07.10