BOJ 185

백준 3273번 두 수의 합 Swift

https://www.acmicpc.net/problem/3273 내 코드let n = Int(readLine()!)!let arr = readLine()!.split(separator: " ").map { Int($0)! }.sorted()let target = Int(readLine()!)!var left = 0var right = n - 1var result = 0while left  Review이중 for문을 통해 모든 경우의 수를 다 계산을 하면 시간초과가 뜨기 때문에, 투포인터를 활용하여 풀었습니다. 예시로 아래와 같은 배열 [1, 3, 5, 10, 12] 이 있다고 하겠습니다.left가 가리키는 배열의 수와 right가 가리키는 배열의 수의 합이 target 과 같다면 결과에 1을 더해줍니다..

BOJ/Swift 2024.11.14

[프로그래머스] 가장 먼 노드 Swift

https://school.programmers.co.kr/learn/courses/30/lessons/49189 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 내 코드import Foundationfunc solution(_ n: Int, _ edge: [[Int]]) -> Int { var visited: [Bool] = Array(repeating: false, count: n+1) var graph: [[Int]] = Array(repeating: [], count: n+1) var result: [Int] = Array(repeating: 0, count: n+1) ..

BOJ/Swift 2024.11.13

백준 3020번 개똥벌레 Swift

https://www.acmicpc.net/problem/3020  내 코드let input = readLine()!.split(separator: " ").map { Int($0)! }let N = input[0]let H = input[1]var list = Array(repeating: 0, count: H)// O(N)for i in 0.. Review이 문제는, N의 크기가 200,000 이므로 시간 복잡도가 O(N^2)이 넘어가면 시간 초과가 뜨게 됩니다.Imos method 이라는 유명한 문제인데, 누적합을 활용하여 풀었습니다.이모스법을 요약하면1. 벽의 시작(아래)과 끝(위)에 1과 -1을 써줍니다. 2. 해당 숫자들을 높이별로 다 더해줍니다. [3. -1, 1, -1, 1, -1, 1] ..

BOJ/Swift 2024.11.08

백준 17609번 회문 파이썬

https://www.acmicpc.net/problem/17609내 코드def is_palindrome(s): return s == s[::-1]def is_similary(s): left, right = 0, len(s) - 1 while left Review논리의 순서는 다음과 같이 생각했습니다.팰린드롬인 경우(is_palindrome) -> 유사 팰린드롬인 경우(is_similary) -> 둘 다 아닌 경우처음에는 아래와 같이 코드를 구현했습니다.def is_palindrome(s): return s == s[::-1]def is_similary(s): for i in range(len(s) - 1): temp = s[:i] + s[i+1:] ..

BOJ/Python 2024.06.17

백준 17939번 Gazzzua 파이썬

https://www.acmicpc.net/problem/17939 내 코드N = int(input())coin = list(map(int, input().split()))[::-1]standard = coin[0]result = 0for i in range(1, len(coin)): if standard > coin[i]: result += standard - coin[i] else: standard = coin[i] print(result) Review문제에 나와있는 핵심 조건은 아래와 같습니다.1. 구매는 매 분마다 1개씩 가능2. 판매는 제한 없음문제에 나와 있는 예제 1 5 10 2 4 3으로 설명하겠습니다.언제 사고 언제 파는지에 대한 기준을 정..

BOJ/Swift 2024.06.03

백준 2579번 계단 오르기 Swift

https://www.acmicpc.net/problem/2579내 코드let N = Int(readLine()!)!var S: [Int] = []var dp: [Int] = Array(repeating: 0, count: N)for _ in 0..Review처음에는 아래 사진 처럼, 가지치기 형식으로 풀었습니다.하지만 가지치기 단계에서 같은 연산이 반복되는 중복되는 과정도 있었기 때문에다이나믹 프로그래밍(DP) 방식으로 생각을 돌렸습니다.문제의 조건은 아래와 같습니다.1. 계단을 오를 때, 한 번에 1 계단, 2 계단 씩 오를 수 있습니다.2. 한계단씩 3번 연속으로 오를 수 없습니다.예를 들어, 한 번에 계단 1, 2, 3을 모두 밟으면 안 됩니다.점화식 마지막 계단을 밟기 전의 상황을 생각해 본다면..

BOJ/Swift 2024.05.13

백준 2609번 최대공약수와 최소공배수 Swift

https://www.acmicpc.net/problem/2609 2609번: 최대공약수와 최소공배수 첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다. www.acmicpc.net 내 코드 // 유클리드 호제법 func gcd(_ a: Int, _ b: Int) -> Int { var a = a var b = b while b != 0 { let temp = b b = a % b a = temp } return a } func lcm(_ a: Int, _ b: Int, gcd: Int) -> Int { return (a * b / gcd) } let input = readLine()!.split(separator: " ").map { Int..

BOJ/Swift 2024.04.18

[프로그래머스] 해시 파이썬

https://school.programmers.co.kr/learn/courses/30/lessons/42576 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내 코드 from collections import defaultdict def solution(participant, completion): hash_table = defaultdict(int) for i in participant: hash_table[i] += 1 for i in completion: hash_table[i] -= 1 if hash_table[i] == 0: del hash_..

BOJ/Python 2024.03.23

백준 7568번 덩치 파이썬

https://www.acmicpc.net/problem/7568 7568번: 덩치 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩 www.acmicpc.net 내 코드 big = [] result = [] N = int(input()) for i in range(N): x, y = list(map(int, input().split())) big.append((x, y)) for i in range(N): cnt = 1 for j in range(N): if big[i][0] < big[j][0] and big[i][1] < big[j][1]..

BOJ/Python 2024.03.22
반응형
목차(index)