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

79. 16진수로 된 구구단을 출력하려고 한다.

콘솔에서 영문자 하나를 입력받고, 맞는 단의 구구단을 출력하라.

입력 범위 : A ~ F

출력 : 모든 수는 16진수 대문자형식으로 출력

입력 예시

B

출력 예시

B*1=B

B*2=16

B*3=21

B*4=2C

B*5=37

B*6=42

B*7=4D

B*8=58

B*9=63

B*A=6E

B*B=79

B*C=84

B*D=8F

B*E=9A

B*F=A5

JAVA

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		char floor = scan.next().charAt(0);
		scan.close();
		switch (floor) {
		case 'A':
			printGuGuDan(10);
			break;
		case 'B':
			printGuGuDan(11);
			break;
		case 'C':
			printGuGuDan(12);
			break;
		case 'D':
			printGuGuDan(13);
			break;
		case 'E':
			printGuGuDan(14);
			break;
		case 'F':
			printGuGuDan(15);
			break;
		default:
			break;
		}
	}
	static void printGuGuDan(int floor) {
		String strFloor = String.format("%X", floor);
		for (int i = 1; i < 16; i++) {
			int calc = i * floor;
			System.out.println(String.format("%X*%X=%X", floor,i,calc));
		}
	}
}

 

Swift 4.2

import Foundation

func printGuGuDan(floor:Int) {
    for i in 1...15 {
        let calc = i * floor
        print(String.init(format: "%X*%X=%X", floor, i, calc))
    }
}
if let line = readLine(), let floor = line.split(separator: " ").first{
    switch floor {
    case "A":
        printGuGuDan(floor: 10)
    case "B":
        printGuGuDan(floor: 11)
    case "C":
        printGuGuDan(floor: 12)
    case "D":
        printGuGuDan(floor: 13)
    case "E":
        printGuGuDan(floor: 14)
    case "F":
        printGuGuDan(floor: 15)
    default:break
    }
}

 

A ~ F 입력받은 수를 10진수로 어떻게 변환할까 고민하다가 귀찮아져서

그냥 스위치문로 일일이 넣어줬습니다

이글을 보시는분은 더 좋은 방법을 떠올릴시거라고 생각됩니다.

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

 

 

78. 콘솔에서 두 정수( n, m )를 입력받는다. 각 수는 두 주사위의 가장 큰 값이다

( 주사위 1: 1 ~ n, 주사위 2: 1 ~ m) 두 주사위를 던질때 나올 수 있는 모든 경우의 수를 출력하라.​

입력 : 1Line 에 n,m이 공백을 두고 입력된다.

입력 범위 : 1 ~ 10

입력 예시

2 3

출력 예시

1 1

1 2

1 3

2 1

2 2

2 3

JAVA

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int firstStopCount = scan.nextInt();
		int secondStopCount = scan.nextInt();
		scan.close();
		
		for (int first = 1; first <= firstStopCount; first++) {
			for (int second = 1; second <= secondStopCount; second++) {
				System.out.println(first + " " + second);
			}
		}
	}
}

Swift 4.2

import Foundation

if let line = readLine(){
    let valueArray = line.split(separator: " ")
    if valueArray.count == 2, let firstStopNum = Int(valueArray.first!), let secondStopNum = Int(valueArray[1]) {
        for first in 1...firstStopNum {
            for second in 1...secondStopNum {
                print("\(first) \(second)")
            }
        }
    }
}

 

 

문제를 읽기 시작했을때 쫄았습니다;;

주사위 라고 해서 정 4면체이든 6면체이든 주사위로서 존재 가능한(던질때 모든면이 나올 확률이 같은) 것에 대해 경우의 수를 뽑는줄알고요...

이과생이지만 수학에 약한 저로서는 여태 문법문제만 나와서 쉬엄쉬엄 타이핑 연습하듯이 놀고 있다가 어퍼컷맞은 기분이였어요.

그리고 밑의 입출력 읽고 안도의 숨을 내쉬었습니다.

그런문제가 아니였어요!

그냥 두수 받고 이중 반복문 돌리는 문제였습니다.

허탈...

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

 

 

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

값이 0인 변수 x에 입력받은 정수보다 크거나 같을때 까지 1 + 2 + 3 + ... 한다했을때

마지막에 x 에 더해지는 값을 출력하시오.

입력 범위 : 0 ~ 1000

입력 예시

55

출력 예시

10

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();
		
		int totalValue = 0;
		int addValue = 0;
		while(totalValue < stopNum) totalValue += ++addValue;
		System.out.println(addValue);
	}
}

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

 ​

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

 

 

76. 콘솔에서 영문자 q가 입력될때까지 영문자를 입력받고 출력하라.

입력 범위 : a ~ z

입력 예시

x b k d l q g a c

출력 예시

x

b

k

d

l

q

JAVA

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		char value = 'a';
		do {
			value = scan.next().charAt(0);
			System.out.println(value);
		} while(value != 'q');
		scan.close();		
	}
}

Swift 4.2

import Foundation

func searchAndPrint(line:String) -> Bool{
    var flag = true //q 이 입력되면 false
    let valueArray = line.split(separator: " ")
    for value in valueArray {
        if let temp = value.first{
            print(temp)
            if temp == "q" {
                flag = false
                break;
            }
        }
    }
    return flag //true : q 값이 존재, false : q 값이 없음
}

var flag = true //q 이 입력되거나 nil이 입력됬을경우 false
while flag {
    let line = readLine()
    if line != nil {
        flag = searchAndPrint(line: line!)
    } else {
        flag = false
    }
}

이전 1071항 문제의 코드에서 0을 q로 바꿔줬습니다.

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

75. 콘솔에서 정수 한 개가 입력될때, 1 부터 그 수 까지의 짝수의 합을 출력하라.

입력 범위 : 1 ~ 100

입력 예시

5

출력 예시

6

JAVA

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int endNumber = scan.nextInt();
		int printValue = 0;
		for (int i = 1; i <= endNumber; i++) {
			if(i%2 == 0 ) printValue += i;
		}
		System.out.println(printValue);
	}
}

 

Swift 4.2

import Foundation

let line = readLine();
if line != nil,let endNumber = Int(line!){
    var printNumber = 0
    for i in 1...endNumber {
        if i % 2 == 0 { printNumber += i }
    }
    print(printNumber)
}

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

74. 콘솔에서 정수 한 개가 입력될때, 0 부터 그 수 까지 출력하라

입력 범위 : 1 ~ 100

입력 예시

5

출력 예시

0

1

2

3

4

5

JAVA

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int endNumber = scan.nextInt();
		int printValue = 0;
		do {
			System.out.println(printValue++);
		} while (printValue <= endNumber);
	}
}

Swift 4.2

import Foundation

let line = readLine();
if line != nil,let endNumber = Int(line!){
    var printNumber = 0
    repeat {
        print(printNumber)
        printNumber += 1
    } while printNumber <= endNumber
}

 

 

그러고보니 이전 문제부터 do - while 을 쓰고있는데 이걸 써보는 문법문제입니다.

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

73. 콘솔에서 문자 1개가 입력될때 a 부터 그문자 까지 순서대로 출력하라.

입력 범위 : a ~ z

입력 예시

f

출력 예시

a

b

c

d

e

f

JAVA

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		char endChar = scan.next().charAt(0);
		char printValue = 'a';
		do {
			System.out.println(printValue++);
		} while (printValue <= endChar);
	}
}

Swift 4.2

import Foundation

let line = readLine();
if line != nil,let endChar = line!.trimmingCharacters(in: .whitespaces).first {
    var printChar = "a".first!
    repeat {
        print(printChar)
        if let uniChar = printChar.unicodeScalars.first {
            if let nextChar = Unicode.Scalar(uniChar.value + 1) {
                printChar = Character(nextChar)
            }
        }
    } while printChar <= endChar
}

 

문자 하나의 스칼라 계산하는건 정말 싫네요

이렇게 하는게 더 편해! 라고 누군가 알려줬으면 좋겠습니다.

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

+ Recent posts