적당한 고통은 희열이다

- 댄 브라운 '다빈치 코드' 중에서

반응형

Algorithm/Baekjoon 43

[Swift 알고리즘] 백준 21921 블로그

○누적합, 슬라이딩 윈도우 - Silver 3 백준 21921 블로그 문제블로그 시작한 지 n일x일 동안 가장 많이 들어온 방문자 수와 기간이 몇 개 있는가?출력x일 동안 가장 많이 들어온 방문자 수 출력. 최대 방문자 수 0명이라면 SAD 출력0이 아니라면 기간이 몇 개 있는지 출력 내 답안1. 누적합 구하기2. 윈도우 오른쪽 index를 하나씩 늘려나가며 2-1. 합이 더 크면 최대합 갱신, count 초기화 2-2. 합이 같으면 count += 1// 84696KB 88mslet nx = readLine()!.split(separator: " ").map { Int($0)! }let n = nx[0], x = nx[1]let visits = readLine()!.split(separator: ..

[Swift 알고리즘] 백준 14246 K보다 큰 구간

×투 포인터 - Silver 2 백준 14246 K보다 큰 구간 문제n개의 자연수로 이루어진 수열이 주어질 때, 특정 구간 [i,j] (i≤j)의 합이 k보다 큰 모든 쌍 (i, j)의 개수를 출력하시오. 첫 번째 시도 - 실패더보기1. 누적합 구하기2. 누적합 배열의 구간 합이 k 보다 큰 구간 찾기 -> 누적합 배열의 구간 합을 구하는 방식이 틀렸다. sum = arr[end] 해주면 항상 0~end 구간의 합을 가지게 되므로.. [start, end] 구간의 합을 계산해야 한다..!* sum 이 k보다 크면 result += (n - end) 해준 건 잘했음. let n = Int(readLine()!)!let input = readLine()!.split(separator: " ").compact..

Algorithm/Baekjoon 2025.08.31

[Swift 알고리즘] 백준 2003 수들의 합 2

○투 포인터, 누적 합 - Silver 4 백준 2003 수들의 합 2 문제N개의 수로 된 수열 A[1], A[2], …, A[N] 이 있다. 이 수열의 i번째 수부터 j번째 수까지의 합 A[i] + A[i+1] + … + A[j-1] + A[j]가 M이 되는 경우의 수를 구하는 프로그램을 작성하시오.입력첫째 줄에 N(1 ≤ N ≤ 10,000), M(1 ≤ M ≤ 300,000,000)이 주어진다. 다음 줄에는 A[1], A[2], …, A[N]이 공백으로 분리되어 주어진다. 각각의 A[x]는 30,000을 넘지 않는 자연수이다. // 70012KB 8mslet input = readLine()!.split(separator: " ").compactMap { Int($0) }let n = input[..

Algorithm/Baekjoon 2025.08.30

[Swift 알고리즘] 백준 1764 듣보잡

○정렬 - Silver 4 (30분) 백준 1764 듣보잡문제김진영이 듣도 못한 사람의 명단과, 보도 못한 사람의 명단이 주어질 때, 듣도 보도 못한 사람의 명단을 구하는 프로그램을 작성하시오.입력첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. 이름은 띄어쓰기 없이 알파벳 소문자로만 이루어지며, 그 길이는 20 이하이다. N, M은 500,000 이하의 자연수이다.듣도 못한 사람의 명단에는 중복되는 이름이 없으며, 보도 못한 사람의 명단도 마찬가지이다.출력듣보잡의 수와 그 명단을 사전순으로 출력한다. 첫번째 시도 - 시간초과당연히 시간초과 뜰 걸 알았지만..

Algorithm/Baekjoon 2024.07.22

[Swift 알고리즘] 백준 1463 1로 만들기

△다이나믹 프로그래밍 - Silver 3 (50분) 백준 1463 1로 만들기문제1. X가 3으로 나누어 떨어지면, 3으로 나눈다.2. X가 2로 나누어 떨어지면, 2로 나눈다.3. 1을 뺀다.정수 N이 주어졌을 때, 위와 같은 연산 세 개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최솟값을 출력하시오. 첫 번째 시도 엥 이게 왜 실버 3이지? 아주 순수하게 3의 배수이면 3으로 나누고, 2의 배수이면 2로 나누고 둘 다 아니면 -1 을 순서대로 해주었더니10에서 3이 아닌 4가 출력이 되어버린다.. 풉 이렇게 쉬울 줄 알았니?  두 번째 시도그렇다면 거꾸로 해보자 1에서 부터 시작해 n을 넘지 않을 때까지 3을 곱해주거나, 2를 곱해주거나, +1을 해주거나이렇게 하면 어떻게 되는거지..

Algorithm/Baekjoon 2024.07.21

[Swift 알고리즘] 백준 28702 FizzBuzz

○수학 - Bronze 1 (20분) 백준 28702 FizzBuzzi = 1,2,3 ...- i가 3의 배수 && 5의 배수이면 FizzBuzz- 3의 배수면 Fizz- 5의 배수면 Buzz- 아니면 그냥 i 그대로 출력연속으로 출력된 세 개의 문자열 다음에 올 문자열을 출력하세요. 연속 세 개면 그 중에 하나만 숫자라도 다음에 올 문자열을 구할 수 있다. 입력 값 받아오면서 숫자가 들어오면 바로 결과값을 구해주도록 해주었다. index가 0이면 num + 3, 1이면 +2, 2이면 +1 => 결과값 숫자는 num + (3 - i)15의 배수면 FizzBuzz, 3의 배수면 Fizz, 5의 배수면 Buzz 아니면 결과값 그대로 출력var result = 0for i in 0..

Algorithm/Baekjoon 2024.07.21

[Swift 알고리즘] 백준 2108 통계학

○수학, 정렬 - Silver 3 (40분) 백준 2108 통계학문제1. 산술평균 : N개의 수들의 합을 N으로 나눈 값2. 중앙값 : N개의 수들을 증가하는 순서로 나열했을 경우 그 중앙에 위치하는 값3. 최빈값 : N개의 수들 중 가장 많이 나타나는 값4. 범위 : N개의 수들 중 최댓값과 최솟값의 차이N개의 수가 주어졌을 때, 네 가지 기본 통계값을 구하는 프로그램을 작성하시오.입력첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다.출력첫째 줄에는 산술평균을 출력한다. 소수점 이하 첫째 자리에서 반올림한 값을 출력한다.둘째 줄에는 중앙값을 출력한다.셋째 줄에는 최빈값을 ..

Algorithm/Baekjoon 2024.07.21

[Swift 알고리즘] 백준 30802 웰컴 키트

○사칙연산 - Bronze 3 (17분) 백준 30802 웰컴 키트몸풀기 문제 ㅇㅇ단순 연산문제여따1. input 받아오기 - 참가자 수 n - 티셔츠 사이즈 별 참가자 수 배열 - 티와 펜의 한 묶음 당 장수2. T장 씩 최소 몇 묶음? - 남아도 되고 부족하면 안되니까 T 나누기 사이즈 별 참가자 수 해서 소수점 올림 해주기3. 펜의 경우는 그냥 참가자 수를 p 로 나눈 몫과 나머지를 구해주면 됨let n = Int(readLine()!)!let array = readLine()!.split(separator: " ").map { Int($0)! }let tp = readLine()!.split(separator: " ").map { Int($0)! }let t = tp[0], p = tp[1]var..

Algorithm/Baekjoon 2024.07.18

[Swift 알고리즘] 백준 1904 01타일

○ 다이나믹 프로그래밍 (나는 재귀로 풀어뜸) - Silver 3 백준 1904 01타일 규칙 찾는데 시간 너무 오래걸림 ㅠ 5 까지는 무난무난. 아 피보나치구나 했는데 확인용으로 6도 계산해보자 하고 6에서 3개 빼먹고 엥 피보나치가 아니었나..? 하고 멍청이짓하다가 시간날림 ㅎ 암튼 결론은 피보나치 수열이다. 나는 재귀로 품 // recursion - 69100KB 12ms let n = Int(readLine()!) print(tiles(1, 0, 1)) func tiles(_ a: Int, _ b: Int, _ c: Int) -> Int { if a == n { return (b + c) % 15746 } return tiles(a + 1, c % 15746, (b + c) % 15746) } 근..

Algorithm/Baekjoon 2024.01.19

[Swift 알고리즘] 백준 1735 분수 합

× 수학, 정수론, 유클리드 호제법 Silver 3 백준 1735 분수 합 Euclidean algorithm 유클리드 호제법 : 두 양의 정수의 최대공약수를 구하는 방법 두 양의 정수 a, b (a > b) 에 대하여 a = bq + r (0 Int { print(a, b) if b == 0 { return a } else { return gcd(b, a % b) } } 이거 안쓰고 푸니까 당연히(?) 시간 초과 뜸 30000 이하 자연수니까 3만 * 3만 = 9억 -> 최악의 경우 4.5억번 반복문 돌아야,,, // 시간초과 let first = readLine()!.split(separator: " ").compactMap { Int($0) } let second = readLine()!...

Algorithm/Baekjoon 2024.01.18
728x90
반응형