https://www.acmicpc.net/problem/1929 1929번: 소수 구하기 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. www.acmicpc.net 에라토스테네스의 체를 사용하여 시간내에 풀 수 있다. 2부터 모든 소수를 구하는 이유는 100부터 시작할 경우 100은 지워지지 않기 때문에 2부터 범위까지의 모든 소수를 구한 수 시작수이상의 수 부터 출력을 하면 된다. import Foundation let input = readLine()!.split(separator: " ").map { Int($0)! } let m = input[0] let n = input[1] va..
https://www.acmicpc.net/problem/11653 11653번: 소인수분해 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. www.acmicpc.net 인수분해만 하면 되는 간단한 문제. 2로 계속나누다가 2로 나누지 못할경우 3, 3으로 나누지 못할경우 4.... 반복해서 나누는 수가 나눠지는 수보다 커지면 반복을 종료한다. import Foundation var input = Int(readLine()!)! var num = 2 func calc(input: Int){ var inputNum = input while inputNum%num < num { if inputNum == 1 { break } if inputNum%num == 0 { inputNum = ..
https://www.acmicpc.net/problem/2581 2581번: 소수 M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다. 단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다. www.acmicpc.net 소수일시 배열에 넣어서 저장한다. 바로 전에 풀었던 문제와 딱히 다를게 없는 문제. import Foundation let m = Int(readLine()!)! let n = Int(readLine()!)! var list:[Int] = [] var count = 0 func findDemical(input: Int)->Int{ if input == 1{ return 0 } for item in 2..
https://www.acmicpc.net/problem/1978 1978번: 소수 찾기 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다. www.acmicpc.net 함수로 푸니 좀더 수월했다. 반복문을 끝까지 돌아서 나왔을 경우(소수)에는 1을 리턴, 중간에 0으로 나뉘면 0을 리턴 하게해 수가 저장된 배열에 소수와 아닌수를 구별 해 reduce로 합쳐서 출력했다. import Foundation var num = readLine() var line = readLine()!.split(separator: " ").map({Int($0)!}) var count = 0 func calc(input: Int) -> Int { if ..
아스키 코드를 사용해 풀면 간단한 문제. swift를 공부한지 일주일 가량 되었지만, 클로저 사용이 아직까지 익숙하지가 않다. 클로저가 swift에서 상당히 중요하다고 하는데.. import Foundation var word = readLine()! var count = 0 var list = Array(repeating: -1, count: 26) var printString = "" word.forEach(){ if(!(list[Int($0.asciiValue!)-97] != -1)) { list[Int($0.asciiValue!)-97] = count } count += 1 } for item in list{ printString += String(item) printString += " " } ..
n과 m 1번 문제와 보기에는 비슷하지만, 조건이 몇개 붙는다. 조건은 사전순으로 출력해야 하며 중복되는 배열은 배제한다. 즉 1 2 3이나 2 3 1 이나 3 2 1은 서로 같으니 1 2 3만 출력해야 한다. 처음에는 1번 문제를 풀었던 방식처럼 사용했는지 안했는지를 표시하는 boolean배열을 만들어서 풀어보려고 했으나, 그럴경우 조건이 복잡해져서 좀 더 단순하게 풀었다. 단순하게 생각해 보면 한 행에서 맨 앞에 있는 수보다 항상 크고 사전적으로 수열이 만들어야 되지므로 반복문을 이용해서 풀이했다. import java.util.Scanner; public class Main { static int[] arr; public static void main(String[] args) { Scanner s..