본문 바로가기

Problem Solvings & Algorithm8

[백준] 10757: 큰 수 A+B - Swift 풀이 노션에서 읽기 문제 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. 입력: 첫째 줄에 A와 B가 주어진다. (0 < A,B < 10^10000) 출력: 첫째 줄에 A+B를 출력한다. 풀이 10의 10000승이면 Int64의 최댓값(9,223,372,036,854,775,807)을 한참 넘어가는 범위이다. 그래서 처음에는 18자리씩 끊어서 배열에 넣고 차례로 더하는 방식으로 풀어 보았다. 그랬더니 두 수의 자릿수가 다를 때의 처리가 너무너무 복잡해서 도저히 해결되지 않았다. 그래서 1자리 씩 끊는 것으로 방법을 바꿨다. let arr = readLine()!.split(separator: " ") let a = splitNum(String(arr[0])), b = splitNu.. 2021. 1. 10.
[백준] 1076: 저항 - Swift 노션에서 보기 문제 전자 제품에는 저항이 들어간다. 저항은 색 3개를 이용해서 그 저항이 몇 옴인지 나타낸다. 처음 색 2개는 저항의 값이고, 마지막 색은 곱해야 하는 값이다. 저항의 값은 다음 표를 이용해서 구한다. 예를 들어, 저항에 색이 yellow, violet, red였다면 저항의 값은 4,700이 된다. 입력: 첫째 줄에 첫 번째 색, 둘째 줄에 두 번째 색, 셋째 줄에 세 번째 색이 주어진다. 색은 모두 위의 표에 쓰여 있는 색만 주어진다. 출력: 입력으로 주어진 저항의 저항값을 계산하여 첫째 줄에 출력한다. 풀이 달리 어려울 게 없는 문제인데 아차차 포인트가 두개 정도 있었다. import Foundation let first = readLine()!, second = readLine()!.. 2021. 1. 6.
[백준] 1009: 분산 처리 - Swift 노션에서 보기 문제 재용이는 최신 컴퓨터 10대를 가지고 있다. 어느 날 재용이는 많은 데이터를 처리해야 될 일이 생겨서 각 컴퓨터에 1번부터 10번까지의 번호를 부여하고, 10대의 컴퓨터가 다음과 같은 방법으로 데이터들을 처리하기로 하였다. 1번 데이터는 1번 컴퓨터, 2번 데이터는 2번 컴퓨터, 3번 데이터는 3번 컴퓨터, ... , 10번 데이터는 10번 컴퓨터, 11번 데이터는 1번 컴퓨터, 12번 데이터는 2번 컴퓨터, ... 총 데이터의 개수는 항상 a^b개의 형태로 주어진다. 재용이는 문득 마지막 데이터가 처리될 컴퓨터의 번호가 궁금해졌다. 이를 수행해주는 프로그램을 작성하라. 입력: 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트 케이스에 대해 정수 a.. 2021. 1. 6.
[백준] 4673: 셀프 넘버 - Swift 문제 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, 이 수를 시작해서 n, d(n), d(d(n)), d(d(d(n))), ...과 같은 무한 수열을 만들 수 있다. 예를 들어, 33으로 시작한다면 다음 수는 33 + 3 + 3 = 39이고, 그 다음 수는 39 + 3 + 9 = 51, 다음 수는 51 + 5 + 1 = 57이다. 이런식으로 다음과 같은 수열을 만들 수 있다. 33, 39, 51, 57, 69, 84, 96, 111, 114, 120, 123, 129, 141, ... n을 d(n)의 생성자라.. 2021. 1. 3.