87. 콘솔에서 세개의 정수( a, r, n )를 입력받고, a를 시작값, r을 등비값으로 가지는 등비수열의 n번째 값을 출력하라.
입력: 1Line 에 공백을 두고 3개의 정수가 입력됨
입력 범위 : 0 ~ 7
입력 예시
2 3 7
출력 예시
1458
JAVA
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int startNum = scan.nextInt();
int mulNum = scan.nextInt();
int targetIndex = scan.nextInt();
scan.close();
int result = startNum;
for (int i = 1; i < targetIndex; i++) {
result *= mulNum;
}
System.out.println(result);
}
}
Swift 4.2
import Foundation
if let line = readLine(){
let valueArray = line.split(separator: " ")
if valueArray.count == 3,
let startNum = Int(valueArray.first!),
let mulNum = Int(valueArray[1]),
let targetIndex = Int(valueArray[2])
{
var result = startNum
for _ in 1 ..< targetIndex {
result *= mulNum
}
print(result)
}
}
86. 콘솔에서 세개의 정수( a, d, n )를 입력받고, a를 시작값, d를 등차값으로 가지는 등차수열의 n번째 값을 출력하라.
입력: 1Line 에 공백을 두고 3개의 정수가 입력됨
입력 범위 : 0 ~ 100
입력 예시
1 3 5
출력 예시
13
JAVA
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int startNum = scan.nextInt();
int addNum = scan.nextInt();
int targetIndex = scan.nextInt();
scan.close();
int result = startNum;
for (int i = 1; i < targetIndex; i++) {
result += addNum;
}
System.out.println(result);
}
}
Swift 4.2
import Foundation
if let line = readLine(){
let valueArray = line.split(separator: " ")
if valueArray.count == 3,
let startNum = Int(valueArray.first!),
let addNum = Int(valueArray[1]),
let targetIndex = Int(valueArray[2])
{
var result = startNum
for _ in 1 ..< targetIndex {
result += addNum
}
print(result)
}
}
85. 콘솔에서 정수 한 개를 입력받고, 1부터 입력 받은 수 까지 출력하라. 단, 3의 배수는 출력하지 않는다.
입력 범위 : 1 ~ 100
입력 예시
10
출력 예시
1 2 4 5 7 8 10
JAVA
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int endNum = scan.nextInt();
scan.close();
for (int i = 1; i <= endNum; i++) {
if(i%3==0) continue;
System.out.print(i + " ");
}
}
}
Swift 4.2
import Foundation
if let line = readLine(),let endNum = Int(line) {
for i in 1...endNum {
if i % 3 == 0 {
continue
}
print(i, separator: "", terminator: " ")
}
}
값이 0인 변수 x에 입력받은 정수보다 작거나 같을때 까지 1 + 2 + 3 + ... 한다했을때
총 더해진값을 출력하라.
// 라는 문제인데 입출력 보면 작거나 작을때가 아닌 크거나 같을때까지로 기존 1080문제와 같은 문제입니다.
// 여러 문제를 만들다 보니 좀 단어가 헷갈리셧나봐요
입력 범위: 1 ~ 100000000
입력 예시
57
출력 예시
66
JAVA
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int stopNum = scan.nextInt();
scan.close();
long totalValue = 0;
int addValue = 0;
while(totalValue < stopNum) totalValue += ++addValue;
System.out.println(totalValue);
}
}
Swift 4.2
import Foundation
if let line = readLine(),let stopNum = Int(line) {
var totalValue = 0
var addValue = 0
while totalValue < stopNum {
addValue += 1
totalValue += addValue
}
print(totalValue)
}
1080항 에세 출력문만 바꾸었습니다.
추가로 1080 보다 입력범위 값이 늘어났기에 자바에서 저장변수를 long형으로 변경했습니다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int w = scan.nextInt();
int h = scan.nextInt();
int b = scan.nextInt();
scan.close();
long middle = 1;
//middle = h * b * c * s;
middle *= h;
middle *= w;
middle *= b;
double result = middle/8;
result /= (1024 * 1024);
System.out.println(String.format("%.2f MB", result));
}
}
Swift 4.2
import Foundation
if let line = readLine(){
let valueArray = line.split(separator: " ")
if valueArray.count == 3,
let h = Int(valueArray.first!),
let w = Int(valueArray[1]),
let b = Int(valueArray[2])
{
let middle = h * w * b
let result = Double(middle) / 8 / 1024 / 1024
print(String.init(format: "%.2f MB", result))
}
}
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int h = scan.nextInt();
int b = scan.nextInt();
int c = scan.nextInt();
int s = scan.nextInt();
scan.close();
long middle = 1;
//middle = h * b * c * s;
middle *= h;
middle *= b;
middle *= c;
middle *= s;
double result = middle/8;
result /= (1024 * 1024);
System.out.println(String.format("%.1f MB", result));
}
}
Swift 4.2
import Foundation
if let line = readLine(){
let valueArray = line.split(separator: " ")
if valueArray.count == 4,
let h = Int(valueArray.first!),
let b = Int(valueArray[1]),
let c = Int(valueArray[2]),
let s = Int(valueArray[3])
{
let middle = h * b * c * s
let result = Double(middle) / 8 / 1024 / 1024
print(String.init(format: "%.1f MB", result))
}
}
이번 문제는 엄청긴데 결국 네 수를 곱하고 8로 1024로 또 1024로 나누는 문젭니다.
중간 결과값이 Int 범위를 넘어서기에 이제 공부시작하시는 분들은 int로 그냥 처리하다가 값이 -값이 나오는일이 비일비재할문제일거같습니다.
물논~!
스위프트에서는 Int값 범위가 매우 넓기에 그냥! Int로 처리하시면됩니다.
사실 코드업에서 이러한 문제에 대해 물어보는걸 귀찮아하는건지 입력가능한 최고값을 입력시 잘못나오는거에대한 테스트케이스가 없는거같습니다.
자바코드쪽의 주석친 한부분이 int형으로 된 곱셈을 int형끼리 곱하고 long에 넣기때문에 문제 생겨야하는데 사이트에서는 문제없다고 평을 내리더군요;;