1034 : [기초-출력변환] 8진 정수 한 개 입력받아 10진수로 출력하기 with Swift
31. 콘솔에서 8진수를 한 개 입력받아 10진수로 출력하라.
입력 예시
13
출력 예시
11
JAVA
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String line = scan.nextLine();
scan.close();
String clean = line.trim();
System.out.println(trans8to10(clean));
}
static public int trans8to10(String str8Value) {
if(str8Value.length() < 1) {return -1; }
if(!valueCheck(str8Value)) {
return -1;
} else {
char [] numberArray = str8Value.toCharArray();
int p = numberArray.length - 1;
int result = 0;
for (char number : numberArray) {
int val = Integer.valueOf(String.valueOf(number));
result += val * ((int) Math.pow(8, p));
p--;
}
return result;
}
}
static public boolean valueCheck(String target) {
try {
Integer.valueOf(target);
return true;
} catch (Exception e) {
System.out.println("Error : Main.valueCheck() ->" + e.getLocalizedMessage());
return false;
}
}
}
Swift 4.2
import Foundation
func trans8to10(strValue:String) -> Int{
guard Int(strValue) != nil else { return -1 }
var result = 0;
var p:Double = Double(strValue.count - 1)
for number in strValue {
if let val = Int(String(number)) {
result += val * Int(pow(Double(8), p))
}
p -= 1;
}
return result
}
let line = readLine()
if line != nil {
print(trans8to10(strValue: line!))
}
좀 쓸모없는게 들어간거같고 비효율적으로 느껴집니다.
그렇지만 더 생각하기 귀찮아서 넘어가렵니다.
요즘 딱히 일이없어 잔심부름 같은일 외에 기초100문제 포스팅하다보니 어느새 1/3 지점에 도착해버렸습니다.
이번에도 하다가 그만두고 먼 미래로 남겨두겠지 했는데 페이스를 보니 다음 프로젝트가 저한테 할당되기전까지 놀랍게도 100문제까지 갈지도 모르겠다는 생각이 드네요.
ios13 발표되고 공부해야할게 늘었는데 공부하기 싫어서 이런거난 하고있으니
멀리서 저를 내려다보면 엄청 한심해 보일거같습니다.
https://codeup.kr/problem.php?id=1034
1035 : [기초-출력변환] 16진 정수 한 개 입력받아 8진수로 출력하기 with Swift
32. 콘솔에서 16진수 정수 한 개를 입력받고 8진수로 바꾸어 출력하라.
입력 예시
f
출력 예시
17
JAVA
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String line = scan.nextLine();
scan.close();
String clean = line.trim();
System.out.println(trans16to8(clean));
}
static public String trans16to8(String str16Value) {
try {
int converted = Integer.valueOf(str16Value, 16);
return String.format("%o", converted);
} catch (Exception e) {
System.out.println("Err : trans16to8 -> " + e.getLocalizedMessage());
return "";
}
}
}
Swift 4.2
import Foundation
func octalTrans(value:Int) -> [Int] {
var flag = value
var result = [Int]()
while flag >= 8 {
result.append(flag % 8)
flag = flag / 8
if flag < 8 { result.append(flag) }
}
result.reverse()
return result
}
func alpaTransNumber(alpa:Character) -> Int? {
switch alpa {
case "a": return 10
case "b": return 11
case "c": return 12
case "d": return 13
case "e": return 14
case "f": return 15
default: return nil
}
}
func trans16to10(strValue:String) -> Int?{
let letters = CharacterSet.letters
var result = 0;
var p:Double = Double(strValue.count - 1)
for number in strValue.unicodeScalars {
if letters.contains(number) {
if let val = alpaTransNumber(alpa: Character(number)) {
result += val * Int(pow(Double(16), p))
} else {
print("Err : trans16to10 -> 잘못된 값이 입력됨")
return nil
}
} else {
if let val = Int(String(number)) {
result += val * Int(pow(Double(16), p))
} else {
print("Err : trans16to10 -> 잘못된 값이 입력됨")
return nil
}
}
p -= 1;
}
return result
}
let line = readLine()
if line != nil {
if let value = trans16to10(strValue: line!) {
var printValue = String()
for number in octalTrans(value: value) {
printValue += String(number)
}
print(printValue)
}
}
자바는 Integer.valueOf()에 저렇게 변환하는 기능이 있는지 몰랐네요 ㅋㅋㅋ
이전 소스도 다 수정하고싶지만 귀찮으니 그냥 남겨둡니다.
놀다가 우연하게 발견했네요. ㅎㅎ
그렇게 자바쪽은 코드가 확 줄었습니다.
valueOf에 진수 변환기능이 있는지 모르는분들을 위해 잠깐 끄적여 보자면
위 코드에서
int converted = Integer.valueOf(str16Value, 16);
에서 사용했는데,
str16Value라는 문자열이 사실 16진수야! 그러니 10진수로 바꿔주렴
라는 기능이 있다고하네요.
지금도 좀 헷갈려서 쓸날이 올지는 모르겠습니다.
자바를 잘 안만지기도 하니까요.
스위프트 코드는 이전 문제들 코드를 긁어와서 짜집기했습니다.
다시 짜기 귀찮아서요.
https://codeup.kr/problem.php?id=1035
1036 : [기초-출력변환] 영문자 한 개 입력받아 10진수로 출력하기 with Swift
33. 콘솔에서 영문자 한 개 를 입력받아 영문자의 아스키 코드 값을 출력해라.
입력 예시
A
출력 예시
65
JAVA
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String line = scan.nextLine();
scan.close();
byte[] bytes = line.getBytes();
for (byte b : bytes) {
System.out.println(b);
}
}
}
Swift 4.2
import Foundation
let line = readLine()
if line != nil {
for scalar in line!.trimmingCharacters(in: .whitespacesAndNewlines).unicodeScalars {
print(scalar.value)
}
}
https://codeup.kr/problem.php?id=1036\
1037 : [기초-출력변환] 정수 한 개 입력받아 아스키 문자로 출력하기 with Swift
34. 콘솔에서 10진 정수 한 개(0~255)를 입력 받아 아스키 문자로 출력해보라.
입력 예시
65
출력 예시
A
JAVA
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int ascii_num = scan.nextInt();
scan.close();
System.out.println(String.format("%c", ascii_num));
}
}
Swift 4.2
import Foundation
let line = readLine()
if line != nil {
if let value = Int(line!){
if let uni = Unicode.Scalar(value) {
print(Character.init(uni))
}
}
}
문뜩 기초100제를 swift로 할만한 이유가 있을까? 라는 의문이 들었습니다.
https://codeup.kr/problem.php?id=1037
'iOS > CodeUP - 기초100 With Swift' 카테고리의 다른 글
1041,1042,1043 [기초-산술연산] 몫,나머지, 다음문자( 아스키 값 ) 연산 with Swift (0) | 2019.07.22 |
---|---|
1038,1039,1040 [기초-산술연산] 합출력,부호변경 with Swift (0) | 2019.07.22 |
1031,1032,1033 [기초-출력변환] 진수 변환 문제 with Swift (0) | 2019.07.12 |
1028,1029,1030 [기초-데이터형] 입력받아 그대로 출력하기2-3 with Swift (0) | 2019.07.09 |
1026,1027 [기초-입출력] 형식 맞춰 출력하기 with Swift (0) | 2019.07.09 |