전체 글(228)
-
[알고리즘] Swift -프로그래머스 연습문제 #155652(둘만의 암호)
문제링크 https://school.programmers.co.kr/learn/courses/30/lessons/155652 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 분석 문자열 s와 skip, 자연수 index가 주어질 때, 다음 규칙에 따라 문자열을 만든다. 문자열 s의 각 알파벳을 index만큼 뒤의 알파벳으로 바꾼다. index만큼 뒤의 알파벳이 z를 넘어갈 경우 다시 a로 돌아간다. skip에 있는 알파벳은 제외하고 건너뛴다. 예를 들어 s= "aukks", skip="wbqd", index=5 일때 a에서 5만큼 뒤에 있는 알파벳은 (ab..
2023.04.05 -
[알고리즘] Swift -프로그래머스 연습문제 #160586(대충 만든 자판)
문제링크 https://school.programmers.co.kr/learn/courses/30/lessons/160586 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 분석 키 하나에 여러 문자가 할당된 경우 동일한 키를 연속해서 빠르게 누르면 할당된 순서대로 문자가 바뀐다. 예를 들어 1번키에 A B C를 순서대로 문자가 할당되어 있다면 1번 키를 한 번 누르면 A, 두 번 누르면 B, 세 번누르면 C가 되는 식이다. 같은 규칙을 적용 해 아무렇게나 만든 휴대폰 자판이 있다. 이 자판은 키의 개수가 1~100까지 있을 수 있고 특정 키를 눌렀을 때 ..
2023.04.05 -
[알고리즘] Swift -프로그래머스 연습문제 #161990(바탕화면 정리)
문제링크 https://school.programmers.co.kr/learn/courses/30/lessons/161990 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 분석 바탕화면의 상태를 나타낸 문자열 배열 wallpaper 빈칸은 .(점), 파일이 있는 칸은 #의 값을 가진다. 드래그하면 파일을 선택할 수 있고, 선택된 파일들을 삭제할 수 있다. 최소한의 이동거리를 갖는 한 번의 드래그로 모든 파일을 선택해서 한 번에 지우려고 할 때 드래그로 파일들을 선택하는 방법 드래그는 바탕화면의 격자점 S에서 E로 이동한다. 점 S에서 E로 드래그할 때,..
2023.04.05 -
[알고리즘] Swift -프로그래머스 연습문제 #120876(겹치는 선분의 길이)
문제링크 https://school.programmers.co.kr/learn/courses/30/lessons/120876 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 분석 선분 3개가 평행하게 있을 때, 2개 이상의 선분이 겹치는 부분의 길이를 리턴하는 문제 풀이 과정 선분의 개수는 3개 선분의 길이를 구하기 위해서는 음수일 경우와 양수일 경우가 있으니 절댓값을 취해준 후 큰 수에서 작은 수를 빼주면 된다. 겹치는 부분을 구하기 위해서는 점 하나가 선분의 시작지점과 끝지점 사이에 있을 경우 겹치게 된다. 범위가 -100부터 100까지의 배열을 만들고..
2023.04.05 -
[알고리즘] Swift -프로그래머스 연습문제 #120875(평행)
문제링크 https://school.programmers.co.kr/learn/courses/30/lessons/120875 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 분석 점 4개의 좌표를 담은 2차원배열이 주어질 때, 두 직선이 평행이 되는 경우가 있으면 1을 리턴, 없으면 0을 리턴하는 문제 풀이 과정 서로 다른 2개 이상의 점이 겹치는 경우는 없다. -> 같은 위치의 점이 없다. 두 직선이 겹치는 경우에도 1을 리턴한다. 임의의 두점을 이은 직선이 x축 또는 y축과 평행한 경우는 주어지지 않는다. 평행의 조건은 직선의 기울기가 서로 같아야한다...
2023.04.04 -
[알고리즘] Swift -프로그래머스 연습문제 #120956(옹알이(1))
문제링크 https://school.programmers.co.kr/learn/courses/30/lessons/120956 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 분석 최대 한 번씩 사용해서 조합한 발음밖에 하지 못한다. 문자열 배열이 주어질 때 조카가 발음할 수 있는 단어의 개수를 구하는 문제 풀이 과정 각 문자열에서 "aya", "ye", "woo", "ma"는 각각 최대 한 번씩만 등장한다. 문자열 배열에 4가지 단어만의 조합으로 있어야 발음할 수 있는 단어로 취급한다. let word = ["aya", "ye", "woo", "ma"] f..
2023.04.04 -
[알고리즘] Swift -프로그래머스 연습문제 #172927(광물 캐기)
문제링크 https://school.programmers.co.kr/learn/courses/30/lessons/172927 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제설명 마인은 곡괭이로 광산에서 광석을 캐려고 합니다. 마인은 다이아몬드 곡괭이, 철 곡괭이, 돌 곡괭이를 각각 0개에서 5개까지 가지고 있으며, 곡괭이로 광물을 캘 때는 피로도가 소모됩니다. 각 곡괭이로 광물을 캘 때의 피로도는 아래 표와 같습니다. 예를 들어, 철 곡괭이는 다이아몬드를 캘 때 피로도 5가 소모되며, 철과 돌을 캘때는 피로도가 1씩 소모됩니다. 각 곡괭이는 종류에 상..
2023.04.04 -
[알고리즘] Swift -프로그래머스 연습문제 #172928(공원 산책)
문제링크 https://school.programmers.co.kr/learn/courses/30/lessons/172928 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제설명 지나다니는 길을 'O', 장애물을 'X'로 나타낸 직사각형 격자 모양의 공원에서 로봇 강아지가 산책을 하려합니다. 산책은 로봇 강아지에 미리 입력된 명령에 따라 진행하며, 명령은 다음과 같은 형식으로 주어집니다. ["방향 거리", "방향 거리" … ] 예를 들어 "E 5"는 로봇 강아지가 현재 위치에서 동쪽으로 5칸 이동했다는 의미입니다. 로봇 강아지는 명령을 수행하기 전에 다..
2023.04.02 -
[알고리즘] Swift -프로그래머스 연습문제 #176963(추억 점수)
문제링크 https://school.programmers.co.kr/learn/courses/30/lessons/176963 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 사진들을 보며 추억에 젖어 있던 루는 사진별로 추억 점수를 매길려고 합니다. 사진 속에 나오는 인물의 그리움 점수를 모두 합산한 값이 해당 사진의 추억 점수가 됩니다. 예를 들어 사진 속 인물의 이름이 ["may", "kein", "kain"]이고 각 인물의 그리움 점수가 [5점, 10점, 1점]일 때 해당 사진의 추억 점수는 16(5 + 10 + 1)점이 됩니다. 다른 사진..
2023.04.01 -
[UIKit] info파일 이동하기
🧸 시작 Build input file cannot be found: '/Users/.../Info.plist'. Did you forget to declare this file as an output of a script phase or custom build rule which produces it? info파일을 다른 폴더로 이동했더니 빌드가 안된다 ㅎㅎ 위의 에러가 발생한다. 이를 해결하기 위한 방법이다. 🧸 info.plist 파일을 클릭한다. Info파일을 클릭하면 오른쪽에 Location을 Relative to Project로 변경해준다. 🧸 Project > Build Settings > Packing 으로 이동 Build Settings으로 이동한 다음 검색으로 info.plist을 한다..
2023.03.29 -
[알고리즘] Swift -백준 #11727(2×n 타일링 2) -DP
문제링크 https://www.acmicpc.net/problem/11727 11727번: 2×n 타일링 2 2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×17 직사각형을 채운 한가지 예이다. www.acmicpc.net 문제 2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×17 직사각형을 채운 한가지 예이다. 입력 첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000) 출력 첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다. 예제 입력 1 2 예제 출력 1 3 예제 입력 2 8 예제 출력 2 171 예제 입력 3 12 예제 ..
2023.03.27 -
[알고리즘] Swift -백준 #2193(이친수) -DP
문제링크 https://www.acmicpc.net/problem/2193 2193번: 이친수 0과 1로만 이루어진 수를 이진수라 한다. 이러한 이진수 중 특별한 성질을 갖는 것들이 있는데, 이들을 이친수(pinary number)라 한다. 이친수는 다음의 성질을 만족한다. 이친수는 0으로 시작하지 않 www.acmicpc.net 문제 0과 1로만 이루어진 수를 이진수라 한다. 이러한 이진수 중 특별한 성질을 갖는 것들이 있는데, 이들을 이친수(pinary number)라 한다. 이친수는 다음의 성질을 만족한다. 이친수는 0으로 시작하지 않는다. 이친수에서는 1이 두 번 연속으로 나타나지 않는다. 즉, 11을 부분 문자열로 갖지 않는다. 예를 들면 1, 10, 100, 101, 1000, 1001 등이 ..
2023.03.23 -
[알고리즘] Swift -백준 #2579(계단 오르기) -DP
문제링크 https://www.acmicpc.net/problem/2579 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net 문제 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점수를 얻게 된다. 예를 들어 와 같이 시작점에서부터 첫 번째, 두 번째, 네 번째, 여섯 번째 계단을 밟아 도착점에 도달하면 총 점수는 10 + 20 + 25 + 20 = 75점이 된다. 계단 오르는 데는 다음과 같은 ..
2023.03.23 -
[알고리즘] Swift -백준 #9095(1, 2, 3 더하기)
문제링크 https://www.acmicpc.net/problem/9095 9095번: 1, 2, 3 더하기 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. www.acmicpc.net 문제 정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 7가지가 있다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다. 1+1+1+1 1+1+2 1+2+1 2+1+1 2+2 1+3 3+1 정수 n이 주어졌을 때, n을 1, 2, 3의 합으로 나타내는 방법의 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 n이 주어진다. n은 양수이며 11보다 작다. 출력 각 테스트 케이스마다, n을 1, 2..
2023.03.22 -
[알고리즘] Swift -백준 #9625(BABBA)
문제링크 https://www.acmicpc.net/problem/9625 9625번: BABBA 상근이는 길을 걷다가 신기한 기계를 발견했다. 기계는 매우 매우 큰 화면과 버튼 하나로 이루어져 있다. 기계를 발견했을 때, 화면에는 A만 표시되어져 있었다. 버튼을 누르니 글자가 B로 변했 www.acmicpc.net 문제 상근이는 길을 걷다가 신기한 기계를 발견했다. 기계는 매우 매우 큰 화면과 버튼 하나로 이루어져 있다. 기계를 발견했을 때, 화면에는 A만 표시되어져 있었다. 버튼을 누르니 글자가 B로 변했다. 한 번 더 누르니 BA로 바뀌고, 그 다음에는 BAB, 그리고 BABBA로 바뀌었다. 상근이는 화면의 모든 B는 BA로 바뀌고, A는 B로 바뀐다는 사실을 알게되었다. 버튼을 K번 눌렀을 때, ..
2023.03.22 -
[알고리즘] Swift -백준 #1010(다리 놓기) -DP
문제링크 https://www.acmicpc.net/problem/1010 1010번: 다리 놓기 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 강의 서쪽과 동쪽에 있는 사이트의 개수 정수 N, M (0 < N ≤ M < 30)이 주어진다. www.acmicpc.net 문제 재원이는 한 도시의 시장이 되었다. 이 도시에는 도시를 동쪽과 서쪽으로 나누는 큰 일직선 모양의 강이 흐르고 있다. 하지만 재원이는 다리가 없어서 시민들이 강을 건너는데 큰 불편을 겪고 있음을 알고 다리를 짓기로 결심하였다. 강 주변에서 다리를 짓기에 적합한 곳을 사이트라고 한다. 재원이는 강 주변을 면밀히 조사해 본 결과 강의 서쪽에는 N개의 사이트가 있고 동쪽에는 M개의 사이트가..
2023.03.22 -
[알고리즘] Swift -백준 #10844(쉬운 계단 수) -DP
문제링크 https://www.acmicpc.net/problem/10844 문제 45656이란 수를 보자. 이 수는 인접한 모든 자리의 차이가 1이다. 이런 수를 계단 수라고 한다. N이 주어질 때, 길이가 N인 계단 수가 총 몇 개 있는지 구해보자. 0으로 시작하는 수는 계단수가 아니다. 입력 첫째 줄에 N이 주어진다. N은 1보다 크거나 같고, 100보다 작거나 같은 자연수이다. 출력 첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다. 예제 입력 1 1 예제 출력 1 9 예제 입력 2 2 예제 출력 2 17 분석 인접한 모든 자리의 차이가 1인 수 = 계단 수 길이가 n인 계단 수가 총 몇 개 인지 구하는 문제 0으로 시작할 수는 없다. 풀이 과정 0으로 시작하는 것 빼고 모든 ..
2023.03.20 -
[알고리즘] Swift -백준 #11048(이동하기) -DP
문제링크 https://www.acmicpc.net/problem/11048 11048번: 이동하기 준규는 N×M 크기의 미로에 갇혀있다. 미로는 1×1크기의 방으로 나누어져 있고, 각 방에는 사탕이 놓여져 있다. 미로의 가장 왼쪽 윗 방은 (1, 1)이고, 가장 오른쪽 아랫 방은 (N, M)이다. 준규는 www.acmicpc.net 문제 준규는 N×M 크기의 미로에 갇혀있다. 미로는 1×1크기의 방으로 나누어져 있고, 각 방에는 사탕이 놓여져 있다. 미로의 가장 왼쪽 윗 방은 (1, 1)이고, 가장 오른쪽 아랫 방은 (N, M)이다. 준규는 현재 (1, 1)에 있고, (N, M)으로 이동하려고 한다. 준규가 (r, c)에 있으면, (r+1, c), (r, c+1), (r+1, c+1)로 이동할 수 있고..
2023.03.20 -
[알고리즘] Swift -백준 #11051(이항 계수 2) -DP
문제링크 https://www.acmicpc.net/problem/11051 11051번: 이항 계수 2 첫째 줄에 \(N\)과 \(K\)가 주어진다. (1 ≤ \(N\) ≤ 1,000, 0 ≤ \(K\) ≤ \(N\)) www.acmicpc.net 문제 자연수 N과 정수 K가 주어졌을 때 이항 계수 {N K}를 10,007로 나눈 나머지를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ K ≤ N) 출력 {N K}를 10,007로 나눈 나머지를 출력한다. 예제 입력 1 5 2 예제 출력 1 10 분석 nCk 를 구하는 문제 nCk = n-1Ck-1 + n-1Ck 풀이 과정 배열의 처음과 끝의 값은 무조건 1으로 설정 var map = Array(r..
2023.03.20 -
[알고리즘] Swift -백준 #2748(피보나치 수 2) -DP
문제링크 https://www.acmicpc.net/problem/2748 2748번: 피보나치 수 2 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 www.acmicpc.net 문제 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 된다. n=17일때 까지 피보나치 수를 써보면 다음과 같다. 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55..
2023.03.20