[LeetCode] 647. Palindromic Substrings
·
PS/LeetCode
문제https://leetcode.com/problems/palindromic-substrings/description/ 입력s: String = 문자열 1 결과ans: Int = s의 부분 문자열에서 찾을 수 있는 모든 회문 개수해석회문이란 중심을 기준으로 대칭되는 문자열이다.  크게 두가지 종류가 있다.  홀수 문자열 회문abcba 중심을 기준으로 정확히 대칭왼쪽 포인터와 오른쪽 포인터가 c를 기준으로 출발하면 됨 짝수 문자열 회문abccba중심이 딱 보이지는 않음왼쪽 포인터는 2번 index , 오른쪽 포인터는 3번인덱스를 기준으로 출발하면 됨즉 중심이 2개 그렇기 때문에 중심을 하나씩 움직이며 각 기준의 홀수 회문과 짝수 회문을 모두 더해가면 s의 부부 문자열의 모든 회문을 찾을 수 있다.  코드..
[백준] 1806 부분합
·
PS/백준
문제https://www.acmicpc.net/problem/1806 입력n: Int = 수열의 길이s: Int = 부분합 기준arr: [Int] = 수열10 결과ans: Int = 부분합이 s이상이 되는 것 중 가장 짧은 길이해석왼쪽부터 오른쪽으로 한칸씩 전진하며 sum이 s이상이 되었을 때 길이를 저장하고왼쪽 포인터를 하나 움직여 sum을 다시 낮춰준다.코드import Foundationlet ns = readLine()!.split{$0 == " "}.map{Int($0)!}let (n,s) = (ns[0], ns[1])let arr = readLine()!.split{$0 == " "}.map{Int($0)!}var dist: Int = Int.maxvar left: Int = 0var right..
[백준] 2470 두 용액
·
PS/백준
문제https://www.acmicpc.net/problem/2470입력n: Int = 전체 용액 수 arr: [Int] = 용액 특성 값2 결과ans: (Int,Int) = 두 용액의 합이 0에 가까운 조합해석두 용액이라는 말과 n의 길이가 십만 정도인 걸 보면 정렬 후 투포인터로 찾아가면 될 것 같다 두 용액의 합이 현재 gap보다 작으면 업데이트두 용액의 합이 음수일 경우 left를 오른쪽으로 두 용액의 합이 양수일 경우 right를 왼쪽으로 이동시키면 될 듯하다.코드import Foundationlet n = Int(readLine()!)!let arr = readLine()!.split{$0 == " "}.map{Int($0)!}.sorted()var left = 0var right = n-1..
[백준] 3273 두 수의 합
·
PS/백준
문제https://www.acmicpc.net/problem/3273 입력n = 수열의 길이arr = 수열x = 만들어야하는 목표1 결과ans: Int = ai + aj로 x를 만들 수 있는 쌍의 수해석1. 각각의 숫자의 개수를 카운팅한다.2. x = 5 , arr = [2,2,3,3] 일 때 만들 수 있는 경우의 수는  (2,3) ,(3,2) 2개다  하지만 두개를 같게 보기때문에 1개이다.다시 말하면 식은 다음과 같다   (ans =  \sum_{i = a_{1}}^{a_{n}} \frac{count(i) + count(j)}{2}) 나누기 2를 하는 이유는 (2,3) = (3,2)므로   코드import Foundationlet n = Int(readLine()!)!let arr = readLine..