88. 콘솔에서 네 개의 정수( a, m, d, n )를 입력받고, a를 시작값 으로갖고 m을 곱하고 d 를 더한 값이 다음값으로 갖는 수열의 n번째 수를 출력하라.

( ex : a , a*m+d, (a*m+d)*m+d, ....)

입력: 1Line 에 공백을 두고 4개의 정수가 입력됨

입력 범위 : a,m,d : -50 ~ 50, n: 1 ~ 10​

입력 예시

1 -2 1 8

출력 예시

-85

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 addNum = scan.nextInt();
		int targetIndex = scan.nextInt();
		scan.close();
		
		int result = startNum;
		for (int i = 1; i < targetIndex; i++) {
			result *= mulNum;
			result += addNum;
		}
		
		System.out.println(result);
	}
}

Swift 4.2

import Foundation

if let line = readLine(){
    let valueArray = line.split(separator: " ")
    if valueArray.count == 4,
        let startNum = Int(valueArray.first!),
        let mulNum = Int(valueArray[1]),
        let addNum = Int(valueArray[2]),
        let targetIndex = Int(valueArray[3])
    {
        var result = startNum
        for _ in 1 ..< targetIndex {
            result *= mulNum
            result += addNum
        }
        print(result)
    }
}

이전 코드에서 덧셈부분만 추가됏습니다.

음... 수학문제도 프로그래밍으로 풀수있다! 라는걸 알려주려고 낸 문제였을까요?

https://codeup.kr/problem.php?id=1091

 

 

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)
    }
}

이전 문제에서 부호랑 변수명만 바꾸었습니다.

https://codeup.kr/problem.php?id=1090

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)
    }
}

뭘 사용해보라는 문제였을까요?....

모르겠다

https://codeup.kr/problem.php?id=1089

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: " ")
    }
}

이번에는 continue를 써보세요 라는 문제였습니다.

https://codeup.kr/problem.php?id=1088

 

 

84. 콘솔에서 정수 하나를 입력받는다.

값이 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형으로 변경했습니다.

https://codeup.kr/problem.php?id=1087

83. 이전문제와 같이 문제 내용이 참 깁니다....

이전 문제는 PCM방식의 음성 녹음에 대한 기초 상식

이번 문제는 BPM방식의 사진 저장에 대한 기초 상식을 담고있으니

문제를 한번씩 읽어보셔도 나쁠것없을듯싶네요

 

입력: h, w, b 가 공백을 두고 입력됨

입력 범위: 자연수, 최대값 h, w, b : 1024, 1024, 40

출력: 소수점 2째 자리에서 반올림, 단위 MB 출력

입력 예시

1024 768 24

출력 예시

2.25 MB

JAVA

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))
    }
}

이번 문제의 소스를 살짝 수정하였습니다.

이번 문제도 마찬가지로 세 수를 곱하고 8, 1024, 1024 로 나누는 문제입니다.

https://codeup.kr/problem.php?id=1086

82. 뭐라 요약해야할지 모르겠으니 원본링크의 문제를 확인바랍니다.

입력: h, b, c ,s 가 공백을 두고 입력됨

입력 범위: 자연수, 최대값 h, b, c ,s : 48000, 32, 5, 6000

출력: 소수점 2째 자리에서 반올림, 단위 MB 출력

입력 예시

44100 16 2 10

출력 예시

1.7 MB

JAVA

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에 넣기때문에 문제 생겨야하는데 사이트에서는 문제없다고 평을 내리더군요;;

따로 안돌려봤으면 그냥 아마 주석친부분으로 포스트했을거같네요

https://codeup.kr/problem.php?id=1085

 

[기초-종합] 소리 파일 저장용량 계산하기(설명)

소리가 컴퓨터에 저장될 때에는 디지털 데이터화 되어 저장된다. 마이크를 통해 1초에 적게는 수십 번, 많게는 수만 번 소리의 강약을 체크해 그 값을 정수값으로 바꾸고, 그 값을 저장해 소리를

codeup.kr

 

81. 콘솔에서 세 개의 정수( r, g, b )를 입력받고 세 수의 조합을 출력하고, 조합의 수를 출력하라.

입력 범위 : 0 ~ 128

출력:

0 ~ r-1, 0 ~ g-1, 0 ~ b-1 까지의 수의 조합을 모두 출력하고, 조합의 수를 출력

단, 출력할때는 오름차순으로 출력한다.

입력 예시

2 2 2

출력 예시

0 0 0

0 0 1

0 1 0

0 1 1

1 0 0

1 0 1

1 1 0

1 1 1

8

JAVA

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int rColorMax = scan.nextInt();
		int gColorMax = scan.nextInt();
		int bColorMax = scan.nextInt();
		scan.close();
		
		int count = 0;
		for (int r = 0; r < rColorMax; r++) {
			for (int g = 0; g < gColorMax; g++) {
				for (int b = 0; b < bColorMax; b++) {
					System.out.println(r + " " + g + " " + b);
					count++;
				}
			}
		}
		System.out.println(count);
	}
}

Swift 4.2

import Foundation

if let line = readLine(){
    let valueArray = line.split(separator: " ")
    if valueArray.count == 3,
        let rColorMax = Int(valueArray.first!),
        let gColorMax = Int(valueArray[1]),
        let bColorMax = Int(valueArray[2])
    {
        var count = 0
        for r in 0 ..< rColorMax {
            for g in 0 ..< gColorMax {
                for b in 0 ..< bColorMax {
                    print("\(r) \(g) \(b)")
                    count += 1
                }//for:bColor
            }//for:gColor
        }//for:rColor
        print(count)
    }
}

이전 1081항 문제소스에서 살짝 수정했습니다.

https://codeup.kr/problem.php?id=1084

 

 

+ Recent posts