일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- widget
- 네트워크
- widgetkit
- c++
- 백준
- 운영체제
- uikit
- 스위프트
- dispatchqueue
- composable architecture
- 리액트
- 알고리즘
- SwiftUI
- 후기
- 대외활동
- 웹
- 멋사
- 컴퓨터그래픽스
- 1일1알골
- swift concurrency
- 위젯킷
- Protocol
- Swift
- cs
- 스유
- 영남대
- TCA
- 멋쟁이사자처럼
- spritekit
- 문법
- Today
- Total
목록알고리즘 (11)
맛동산이
문제 [https://school.programmers.co.kr/learn/courses/30/lessons/12939] 문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다. str에 나타나는 숫자 중 최소값과 최대값을 찾아 이를 "(최소값) (최대값)"형태의 문자열을 반환하는 함수, solution을 완성하세요. 예를들어 s가 "1 2 3 4"라면 "1 4"를 리턴하고, "-1 -2 -3 -4"라면 "-4 -1"을 리턴하면 됩니다. 해설 기본적으로 그냥 문자열과 배열을 다루는 문제인것 같다. func solution(_ s:String) -> String { var numbers = s.components(separatedBy: " ").map{ Int($0)! } numbers.sort() r..
문제 https://www.acmicpc.net/problem/2231 해설 그냥 1부터 천천히 한개씩 분해합을 하여서 해당값을 찾으면 된다. 단 중요한점은 해당값을 리턴하는것이 아니기 때문에 이전의 값을 저장해둬야한다. import Foundation func solution() -> Int { let n = Int(readLine()!)! for i in 1...n { var sum = i var temp = i for i in String(temp) { sum += Int(String(i))! } if sum == n { return temp } } return 0 } print(solution())
문제 (https://www.acmicpc.net/problem/2839) 해설 5가 최대한으로 많이 들어가면 되는것이기 때문에 5를 처음에 나눠지는지 비교를 하고 3을 뺀 다음 다시 5로 나눠지는지 비교 계속 해나가면된다. 마지막에 나머지가 0 이 된다면 3으로만 나눠져도 나머지는 0 일것이고, 5로 나눠진다 해도 5가 하나라도 포함된 숫자일 것이다. 따라서 n이 0 보다 크다면, 계속해서 나누다가 0보다 작아지는 순간 -1을 출력하면 된다. func solution() -> Int { var n = Int(readLine()!)! var result = 0 if n % 5 == 0 { return n / 5 } while n >= 0 { n -= 3 result += 1 if n % 5 == 0 { ..
문제 https://www.acmicpc.net/problem/10816 10816번: 숫자 카드 2 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 정답코드 #include #include #include #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(NULL); int n, m; cin >> n; int number1, number2; vector arr1; for (int a = 0; a < n; a++)..
문제 https://www.acmicpc.net/problem/1764 1764번: 듣보잡 첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. www.acmicpc.net 정답코드 #include #include #include #include #include using namespace std; int main() { int n, m; cin >> n >> m; set arr1; string st1; string st2; set answer; for (int a = 0; a > st1; arr1.insert(st1); } fo..
문제 https://www.acmicpc.net/problem/1269 1269번: 대칭 차집합 첫째 줄에 집합 A의 원소의 개수와 집합 B의 원소의 개수가 빈 칸을 사이에 두고 주어진다. 둘째 줄에는 집합 A의 모든 원소가, 셋째 줄에는 집합 B의 모든 원소가 빈 칸을 사이에 두고 각각 주어 www.acmicpc.net 정답코드 #include #include #include #include #include using namespace std; // 3 5 // 1 2 4 // 2 3 4 5 6 int main() { int n, m; cin >> n >> m; set arr1; set arr2; vector ar1; vector ar2; int num1, num2; int count1, count2;..
문제 https://www.acmicpc.net/problem/14425 14425번: 문자열 집합 첫째 줄에 문자열의 개수 N과 M (1 ≤ N ≤ 10,000, 1 ≤ M ≤ 10,000)이 주어진다. 다음 N개의 줄에는 집합 S에 포함되어 있는 문자열들이 주어진다. 다음 M개의 줄에는 검사해야 하는 문자열들이 주어 www.acmicpc.net 코드 첫번째 코드 #include #include #include #include using namespace std; int main() { int n; int m; cin >> n; cin >> m; set arr1; vector arr2(n); string u; int count = 0; for (int a = 0; a > ..
https://www.acmicpc.net/problem/1427 1427번: 소트인사이드 첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 정렬 코드는 뭐.. 어쩔수없다! 외우자! 그리고 입력값을 항상 정수라고 고정해버리면, 생각이 굳는다. 숫자라도 문자열로 입력받아, 정수로 변환하거나 정수로 입력받아 문자로 변환할수 있기 때문에 이를 잘 써야한다. 문자를 정수로 바꿀때는 atoi를쓰면된다. #include #include #include #include using namespace std; int compare(char a, char b) { return a > b; } int main() { string n; cin..
https://www.acmicpc.net/problem/1436 1436번: 영화감독 숌 666은 종말을 나타내는 숫자라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타 www.acmicpc.net 아이디어가 안떠올라서 문제 정답을 봤다. 부르스 포스 같은경우에는 그냥, 진짜 처음부터 끝까지 숫자를 1씩 올려가면서 탐색하는 방법이 맞는것 같고, 그러면서 이 문제에서는 10의 자리를 줄여 나가면서 푸는방법이라는게 인상깊었음. temp/=10 이, 자릿수를 줄이는 방법이고 1000% =666 으로 검색함. #include #include #include #include using namespa..