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

 

반응형

pickerView는 label이나 button처럼 손쉽게 텍스트에 대한 접근을 할 수 없다.

생긴것부터가 배열이니 배열 전체에 대해 어떻게 해줄까를 정해줘야되서 그렇게 해둔듯 하다.

그러한 부분을 어떻게 할지를 정하는 함수가 pickerview에는 있다.

 

func pickerView(_ pickerView: UIPickerView, attributedTitleForRow row: Int, forComponent component: Int) -> NSAttributedString?

 

라는 함수 인데

텍스트를 그냥 넣어 줄때 사용하는 

func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String?

와 사용이 비슷하다.

 

아래는 빨간색으로 변경하는 예시를 플레이그라운드에서 만들어 보았다.

텍스트 설정을 변경하는 키값이 상당히 많은데 그중에서도

foregroundColor

를 사용했다.

 

위 소스를 플레이그라운드에서 돌리면 아래와 같이 나온다.

 

아래는 키들에 대한 애플문서이다.

https://developer.apple.com/documentation/foundation/nsattributedstring/key

 

Apple Developer Documentation

 

developer.apple.com

 

반응형

'iOS > swift' 카테고리의 다른 글

KeyboardObserver~  (0) 2021.10.19
Guide Swift Programming Language 5.5  (0) 2021.10.01
프로그래머스 - 프린터  (0) 2021.05.06
프로그래머스 - 기능개발  (0) 2021.05.05
프로그래머스 - 모의고사  (0) 2021.05.04

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

 

 

반응형

80. 콘솔에서 정수 하나를 입력받고 1부터 그 수까지 출력하라. 단 369게임에 해당하는 수는 X로 대신한다.

입력 범위 : 1 ~ 10

입력 예시

9

출력 예시

1 2 X 4 5 X 7 8 X

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 ) {
				System.out.print("X ");
			} else {
				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 { print("X", separator: " ", terminator: " ") }
        else { print(i, separator: " ", terminator: " ") }
    }
}

자바소스를 코드업에서 검사받을때 println으로 출력한것을 버튼 누르고 봐서 아차! 했는데

ok해주네요.

출력형식과 다른모양이건만...

스위프트에선 println 이 따로 없습니다.

print 구문은

print( 프린트할 여러 변수 , separator: , terminator: ) 로 구성되어있는데

separator 는 프린트할 변수 란에 여러개를 넣을경우에만 사용되고 하나만 넣을땐 있으나 마나입니다.

예를 들어 print("제가","바로","이렙니다", separator: "!", terminator:"") 로 해줄경우

출력이 제가!바로!이렙니다 로 나오게됩니다.

각 변수끼리의 구분을 뭘로 할꺼냐? 를 정하는녀석이죠.

그리고 뒤의 terminator는 끝날때 뭐를 붙일지 정하는 녀석입니다.

디폴트로 다음라인으로 넘어가게 되어있는지 print()만 입력시 바로 다음라인으로 가지요.

위에 예제를 다시 써보자면

print("제가","바로","이렙니다", separator: "!", terminator:"~~~~")

로입력시

출력은 제가!바로!이렙니다~~~~ 로 나오게됩니다.

콘솔에 출력하는걸 신경써야할일이 올지는 모르겠습니다만

알아두면 좋을듯싶습니다.

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

반응형

+ Recent posts