구현 18

[백준 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/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

[백준 16931] 겉넓이 구하기 (Swift)

문제 : https://www.acmicpc.net/problem/16931 16931번: 겉넓이 구하기 크기가 N×M인 종이가 있고, 종이는 1×1크기의 칸으로 나누어져 있다. 이 종이의 각 칸 위에 1×1×1 크기의 정육면체를 놓아 3차원 도형을 만들었다. 종이의 각 칸에 놓인 정육면체의 개수가 주어 www.acmicpc.net 1. 문제 이해하기 입력으로 좌, 우(n, m), 그리고 각 칸마다 올려진 블록의 개수를 2차원 배열로 주어진다. 총 겉넓이(위, 아래, 앞, 뒤, 좌, 우 넓이) 출력하기 2. 문제 풀이 생각하기 먼저 위아래는 (2차원 배열의 행 * 열 * 2), 좌, 우는 (좌의 겉넓이 * 2), 앞, 뒤도 (앞의 겉넓이 * 2) 구하면 된다고 생각했습니다. 처음에는 한 방향의 겉넓이를 ..

Algorithm/Swift 2021.07.06

[Programmers] 2020 카카오 인턴십 - 보석쇼핑 (Swift)

문제 : https://programmers.co.kr/learn/courses/30/lessons/67258 코딩테스트 연습 - 보석 쇼핑 ["DIA", "RUBY", "RUBY", "DIA", "DIA", "EMERALD", "SAPPHIRE", "DIA"] [3, 7] programmers.co.kr Step 1. 문제 이해하기 gems 배열에는 보석들의 이름이 담겨있다. 모든 종류의 보석을 적어도 1개 이상 포함하면서 가장 짧은 연속하는 구간의 처음과 끝을 정수 배열로 출력 만약 가장 짧은 구간이 여러 개라면 시작 구간이 가장 작은 구간을 출력 배열의 크기는 최대 1 이상 100,000 이하 Step 2. 문제 풀이 생각하기 연속하면서 가장 짧은 구간이라고 해서 투 포인터를 떠올렸습니다. gems..

Algorithm/Swift 2021.07.02

[Programmers] 2020 카카오 인턴십 - 키패드 누르기 (Swift)

문제 : https://programmers.co.kr/learn/courses/30/lessons/67256 코딩테스트 연습 - 키패드 누르기 [1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] "right" "LRLLLRLLRRL" [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2] "left" "LRLLRRLLLRR" [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] "right" "LLRLLRLLRL" programmers.co.kr Step 1. 문제 이해하기 왼손, 오른손 엄지는 각각 '*', '#'에 위치해 있고 왼쪽 키패드(1, 4, 7)는 무조건 왼손이 클릭하고 오른쪽 키패드(3, 6, 9)는 오른손이 클릭 중앙 키패드(2, 5, 8, 0)를 클릭할 때는 왼손 또는..

Algorithm/Swift 2021.06.25

[백준 1089] 스타트링크 타워 (Python)

문제 : https://www.acmicpc.net/problem/1089 1089번: 스타트링크 타워 스타트링크 타워는 총 10N개 층이 있는 고층 건물이고, 0층부터 10N-1층으로 번호가 매겨져 있다. 층 번호를 숫자 N개로 표현한다. 숫자 N개로 층 번호를 표시할 수 없는 경우 앞에 0을 채운다. 숫자 www.acmicpc.net Step 1. 문제 이해하기 자릿수가 9자리가 나올 수 있고 한 자릿수마다 0 ~ 9의 숫자가 올 수 있음. 나올 수 있는 모든 숫자 조합의 합을 구하고 평균을 구해야 하는 문제. 9자리를 브루트 포스로 모든 경우의 수를 구하면 시간 초과가 발생할 수 있음. Step 2. 문제 풀이 생각하기 자릿수마다 나올 수 있는 숫자를 판별해야겠다고 생각했고, 9자리의 조합할 수 있..

Algorithm/Python 2021.06.20