Algorithm 28

[백준 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] 카카오 인턴십 - 경주로 건설 (Swift)

문제 : https://programmers.co.kr/learn/courses/30/lessons/67259 코딩테스트 연습 - 경주로 건설 [[0,0,0,0,0,0,0,1],[0,0,0,0,0,0,0,0],[0,0,0,0,0,1,0,0],[0,0,0,0,1,0,0,0],[0,0,0,1,0,0,0,1],[0,0,1,0,0,0,1,0],[0,1,0,0,0,1,0,0],[1,0,0,0,0,0,0,0]] 3800 [[0,0,1,0],[0,0,0,0],[0,1,0,1],[1,0,0,0]] 2100 [[0,0,0,0,0,0],[0,1,1,1,1,0],[0,0,1,0,0,0],[1,0,0,1,0,1],[ programmers.co.kr 문제 설명에 앞서, 테스트 케이스 14, 24에서 막혀서 질문하기에 다른 분들..

Algorithm/Swift 2021.07.03

[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/67257 코딩테스트 연습 - 수식 최대화 IT 벤처 회사를 운영하고 있는 라이언은 매년 사내 해커톤 대회를 개최하여 우승자에게 상금을 지급하고 있습니다. 이번 대회에서는 우승자에게 지급되는 상금을 이전 대회와는 다르게 다음과 programmers.co.kr Step 1. 문제 이해하기 숫자(999 이하)와 연산자('+', '-', '*')를 띄어쓰기 없이 포함한 문자열 변수 expression이 존재 문자열의 총길이는 3 이상 100 이하 연산자 우선순위를 임의로 설정하여 나온 우승상금(결괏값)의 절댓값이 가장 큰 값을 출력 Step 2. 문제 풀이 생각하기 연산자 우선순위 조합을 어떻게 구현할 것인지 ..

Algorithm/Swift 2021.07.02

[Algorithm / Swift / IDE] Swift로 알고리즘 공부하기 좋은 방법

Swift로 작성한 소스 코드를 Run 한 결과도 보고 싶고 클래스의 객체 내부에 함수가 뭐가 있는지 알고 싶고 구현하다가 막히는 부분 라인이 어디인지 디버깅하고 싶을 때! Xcode를 이용해서 문제를 해결할 수 있습니다. [Step 1] 새로운 프로젝트에서 Command Line Tool 생성하기 [Step 2] Run 해보기 결과가 잘 나오는 것을 확인할 수 있습니다. [Step 3] BreakPoint 설정해보기 라인 숫자를 클릭하면 BreakPoint를 설정할 수 있습니다. 이를 없애기 위해서는 드래그한 상태로 왼쪽으로 버리거나 cmd + Y를 이용해서 BreakPoint를 인식하지 못하게 할 수 있습니다. [Step 4] Debugging 해보기 디버깅을 통해서 변수에 생각한 값이 들어갔는지 확..

Algorithm/Swift 2021.06.25

[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

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

문제 : https://www.acmicpc.net/problem/5014 5014번: 스타트링크 첫째 줄에 F, S, G, U, D가 주어진다. (1 ≤ S, G ≤ F ≤ 1000000, 0 ≤ U, D ≤ 1000000) 건물은 1층부터 시작하고, 가장 높은 층은 F층이다. www.acmicpc.net Step 1. 문제 이해하기 F : 건물 높이, S : 현재 위치, G : 도착 지점, U : 위로 U만큼 이동, D : 아래로 D만큼 이동 한 지점에서 갈 수 있는 경우의 수는 2가지(S + U , S - D) 버튼을 누르는 최소 횟수 -> 최단 경로 Step 2. 문제 풀이 생각하기 'S에서 가장 먼저 G지점에 도착할 때, 최소 횟수를 출력해보자'라고 생각했습니다. 그리고 '어떠한 방식으로도 G에..

Algorithm/Python 2021.06.15