본문 바로가기

분류 전체보기

(359)
BOJ-11726 2xn 타일링 Swift 문제 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다. 입력 첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000) 출력 첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다. 내가 푼 풀이 - n이 5일때까지 경우의 수를 구해봤는데 결국 피보나치 수열을 구하는 식이 나온다. - f(n) = f(n-1) + f(n-2) - n이 일정숫자를 넘으면 담을수없이 커진다. 그래서 계산할때마다 10007로 나눈 나머지를 넣는다. - f(n) % 10007 = ( f(n-1) + f(n-2) ) % 10007 import Foundation var num = I..
BOJ-1003 피보나치 함수 Swift 문제 다음 소스는 N번째 피보나치 수를 구하는 C++ 함수이다. int fibonacci(int n) { if (n == 0) { printf("0"); return 0; } else if (n == 1) { printf("1"); return 1; } else { return fibonacci(n‐1) + fibonacci(n‐2); } } fibonacci(3)을 호출하면 다음과 같은 일이 일어난다. fibonacci(3)은 fibonacci(2)와 fibonacci(1) (첫 번째 호출)을 호출한다. fibonacci(2)는 fibonacci(1) (두 번째 호출)과 fibonacci(0)을 호출한다. 두 번째 호출한 fibonacci(1)은 1을 출력하고 1을 리턴한다. fibonacci(0)은 ..
BOJ-9095 1,2,3 더하기 Swift 문제 정수 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, 3의 합으로 나타내는 방법의 수를 출력한다. 내가 푼 풀이 - n이 5일때 까지 직접 구해봤다. - n이 5일때 경우의수는 13으로 n=4, n=3, n=2 일때 경우의수를 모두 합한 수로 알 수 있었다. - 이를 점화..
BOJ-1463 1로 만들기 Swift 문제 정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이다. X가 3으로 나누어 떨어지면, 3으로 나눈다. X가 2로 나누어 떨어지면, 2로 나눈다. 1을 뺀다. 정수 N이 주어졌을 때, 위와 같은 연산 세 개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최솟값을 출력하시오. 입력 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. 출력 첫째 줄에 연산을 하는 횟수의 최솟값을 출력한다. 내가 푼 풀이 - 연산의 종류는 세가지, 연산을 반복하여 1로 만드는 최소 횟수 를 구한다. - DP를 이용해 주어진 수 N을 세가지 연산을 통해 최솟값을 저장해내려간다. - 배열 인덱스 1의 값은 최솟값 import Foundation var num = Int(Strin..
Swift 스택(Stack) 구현 스택: 한쪽 끝에서만 자료를 넣거나 뺄 수 있는 자료구조로 선형구조이다 (Last In First Out) 자료를 밀어넣는다: push 넣어둔 자료를 꺼낸다: pop 선입선출하는 큐와 반대로 스택은 후입선출을 지킨다. Swift에서는 스택을 구현해서 사용해야 하지만 배열의 append, popLast 를 이용하면 굳이 구현하지않고 배열을 스택처럼 사용할 수 있다. import Foundation struct Stack { var elements: [T] = [] var count: Int { return elements.count } var isEmpty: Bool { return elements.isEmpty } mutating func pop() -> T? { return elements.popLas..
2023 팀네이버 코테 후기 2023. 04. 15 총 4문제 2시간이 주어졌다. 다시 코테 준비하면서 얼마 안되서 찾아온 코테시험이였다. 1문제 제출했고 한문제가 시험 종료직전에 제출되서 애매하다.. 1번 - 완벽구현 문제? 시간 엄청 잡아먹었다. 거의 한시간을 쓴거 같다. 많은 문자열을 나눠서 따로 정리해서 정리한 문자끼리 계산하고.. 등등 처음에 문제를 읽고 이해하는 과정도 시간이 걸렸고, 예시로 주는 문자열들이 어떻게 돌아가는지, 세부적인 디테일을 이해하는데도 시간이 걸렸다. 이해를 해도 구현하는 과정에서 몇개 조건문이랑 몇개 배열, 딕셔너리문법이 잘 맞지않아서 오래걸린듯 하다. 결국 제출했는데 시간을 많이 먹었다. 2번 - dp? 2번의 문제는 감이 잘 안잡혀서 어떻게 푸는지 고민이 좀 됬다. 그러다가 최근에 푼 프로그래머..
[프로그래머스] 택배상자 Swift 문제 설명 영재는 택배상자를 트럭에 싣는 일을 합니다. 영재가 실어야 하는 택배상자는 크기가 모두 같으며 1번 상자부터 n번 상자까지 번호가 증가하는 순서대로 컨테이너 벨트에 일렬로 놓여 영재에게 전달됩니다. 컨테이너 벨트는 한 방향으로만 진행이 가능해서 벨트에 놓인 순서대로(1번 상자부터) 상자를 내릴 수 있습니다. 하지만 컨테이너 벨트에 놓인 순서대로 택배상자를 내려 바로 트럭에 싣게 되면 택배 기사님이 배달하는 순서와 택배상자가 실려 있는 순서가 맞지 않아 배달에 차질이 생깁니다. 따라서 택배 기사님이 미리 알려준 순서에 맞게 영재가 택배상자를 실어야 합니다. 만약 컨테이너 벨트의 맨 앞에 놓인 상자가 현재 트럭에 실어야 하는 순서가 아니라면 그 상자를 트럭에 실을 순서가 될 때까지 잠시 다른 곳에..
[프로그래머스] 두 큐 합 같게 만들기 Swift 문제 설명 길이가 같은 두 개의 큐가 주어집니다. 하나의 큐를 골라 원소를 추출(pop)하고, 추출된 원소를 다른 큐에 집어넣는(insert) 작업을 통해 각 큐의 원소 합이 같도록 만들려고 합니다. 이때 필요한 작업의 최소 횟수를 구하고자 합니다. 한 번의 pop과 한 번의 insert를 합쳐서 작업을 1회 수행한 것으로 간주합니다. 큐는 먼저 집어넣은 원소가 먼저 나오는 구조입니다. 이 문제에서는 큐를 배열로 표현하며, 원소가 배열 앞쪽에 있을수록 먼저 집어넣은 원소임을 의미합니다. 즉, pop을 하면 배열의 첫 번째 원소가 추출되며, insert를 하면 배열의 끝에 원소가 추가됩니다. 예를 들어 큐 [1, 2, 3, 4]가 주어졌을 때, pop을 하면 맨 앞에 있는 원소 1이 추출되어 [2, 3, ..