[백준] 16916 부분 문자열
·
PS/프로그래머스
문제https://www.acmicpc.net/problem/16916 입력s: String = 문자열pattern: String = S의 부분 문자열인지 확인해야할 pattern1 결과ans: Int = 부분문자열이 맡다면 1 아니면 0해석문자열과 패턴이 최대 100만가까이 되는걸 보니 브루투스 포스 brute-force  방식으로는 해결이 불가능해보인다.이 문제는 문자열에서 특정 패턴을 찾아내는 전형적인 kmp 문제  1) lps 배열을 구한 후 2) kmp 를 진행한다. 코드import Foundationfunc computeLPS(_ pattern: [Character]) -> [Int] { let n = pattern.count var lps: [Int] = [Int](rep..
[프로그래머스] 무인도 여행
·
PS/프로그래머스
문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr입력 maps:[String] = 지도 문자열 maps[i] - "X" = 바다 - 숫자 = 무인도에 머물 수 있는 수결과ans: [Int] = 각 섬마다 최대 머물 수 있는 일 수 , 하나 없으면 [-1]해석X가 아니면 섬이므로 일단 들어가서 연결되어있는 모든 섬을 방문하여 숫자를 더한 다음 결과 배열에 담는다.방문했는지 여부를 알아야하니 visited 배열필요 코드import Foundationextension String { subscript(_ index: Int) -> String { ..
[프로그래머스] 미로 탈출
·
PS/프로그래머스
문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 입력maps:[String] = 맵정보를 나타냄O = 빈공간X = 벽S = 시작지점L = 레버E = 탈출결과ans: Int = 레버를 올린 후 도착지점까지 최소 시간, 도착 불가면 -1해석전형적인 bfs를 통한 최단거리 찾기 문제인 것 같다.그런데 하나 다른 점은 반든시 레버 지점에 도착한 후 출구로 가야한다.그렇다면 bfs를 두번 진행하면 될 듯하다. 1. 출발지 -> 레버2. 레버 -> 출구  코드import Foundationextension String { subscript(_ index: I..
[프로그래머스] 택배상자
·
PS/프로그래머스
문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr입력order:[Int] = 택배 트럭에 실어야하는 순서결과ans: Int = 원하는 순서로 실을 수 있는 최대 상자해석현재 컨베이어 벨트에 있는 순서는 항상 [1...n] 순으로 있고 앞에서부터 뺄 수 있다.이후 택배 트럭에 실어야할 순서인 상자가 아니면 stack에 임시로 넣고 아니면 바로 뺀다. 정리하면 택배 상자를 내릴 수 있는 경우의 수는 2가지다.컨베이어 벨트에서 뺀다.스택에서 뺀다. 단, 스택은 가장 최근에 실은 순으로 뺄 수 있다.코드import Foundationfunc solution(_ o..
[프로그래머스] n + 1 카드게임
·
PS/프로그래머스
문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr입력coin:Int = 동전 개수cards:[Int = 카드 뭉치 결과answer: Int = 최대로 진행할 수 있는 라운드 수해석다음 라운드 수로 진행할 수 있는 경우의 수는 다음과 같다.공통목표는 현재 들고 있는 카드 2개의 합이 n+1을 만족해야 넘어갈 수 있다조건 A: 처음 갖고 있는 카드 2개로 조건 만족, coin 소모 x , 가장 좋은 방법조건 B: 처음 갖고 있는 카드 1개 +  새로 뽑은 카드로 조건 만족, coin 소모 1개 조건 C: 새로 뽑은 카드 2개로 조건 만족, coin 2소모여기서..
[프로그래머스] 산 모양 타일링
·
PS/프로그래머스
문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 입력n:Int = 윗변의 길이tops:[Int] = 정삼각형의 위쪽에 정삼각형을 붙이는 여부tops[i] = 0 없는 경우tops[i] = 1 위에 삼각형이 있는 경우결과ans: Int = 만들 수 있는 경우의 수를 10007로 나눈 결과놓을 수 있는 경우의 수 해석 보자마자 dp를 의심할 수 있다. 왜냐하면 이전 삼각형 상태로 다음 상황이 결정되기 때문에 부분 문제를 풀어야되는 dp카테고리다. 경우의 수를 생가가해보지.  1. 현재 i-1에 2번이 놓여있을 때i에 1,3,4(위에 공간이 있을 때) 놓을..