55. 콘솔에서 두 개의 정수를 입력받아, 두 값 모두 0 일때만 1을 그외엔 0을 출력하게 하라.

입력 : 1line 으로 2개의 정수가 공백을 두고 입력

입력 범위: 0~1

입력 예시

0 1

출력 예시

0

java

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
	    Boolean value0 = intToBool(scan.nextInt());
	    Boolean value1 = intToBool(scan.nextInt());
		scan.close();
		
		System.out.println(boolToInt(nor(value0,value1)));
	}
	static boolean nor(boolean value0, boolean value1 ) {
		return !value0 && !value1 ? true : false;
	}
	static boolean intToBool(int value) {
		return (value > -1) ? ((value == 0) ? false : true) : false;
	}
	static int boolToInt(boolean value) {
		return value ? 1 : 0;
	}
}

 

 

Swift 4.2

import Foundation

func intToBool(_ value:Int) -> Bool {
    return value > -1 ? (value == 0 ? false : true ): false
}
func nor(_ value0:Bool,_ value1:Bool) -> Bool {
    return !value0 && !value1 ? true : false;
}

let line = readLine()
if line != nil {
    let values = line!.split(separator: " ")
    if values.count == 2 {
        if let value0 = Int(values[0]), let value1 = Int(values[1]) {
            print(String.init(format: "%d", nor(intToBool(value0), intToBool(value1))))
        }
    }
}

 

저번 소스랑 조건만 살짝 다릅니다.

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

반응형

54. 콘솔에서 두 개의 정수가 입력될때 두 값이 서로 같을때만 1이 출력되게하라.

입력 : 1line 으로 두 개의 정수가 공백을 두고 입력된다.

입력 범위 : 0 ~ 1

입력 예시

0 0

출력 예시

1 1

java

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
	    Boolean value0 = intToBool(scan.nextInt());
	    Boolean value1 = intToBool(scan.nextInt());
		scan.close();
		
		System.out.println(boolToInt(xnor(value0,value1)));
	}
	static boolean xnor(boolean value0, boolean value1 ) {
		return value0 == value1 ? true : false;
	}
	static boolean intToBool(int value) {
		return (value > -1) ? ((value == 0) ? false : true) : false;
	}
	static int boolToInt(boolean value) {
		return value ? 1 : 0;
	}
}

 

Swift 4.2

import Foundation

func intToBool(_ value:Int) -> Bool {
    return value > -1 ? (value == 0 ? false : true ): false
}
func xnor(_ value0:Bool,_ value1:Bool) -> Bool {
    return value0 == value1 ? true : false
}

let line = readLine()
if line != nil {
    let values = line!.split(separator: " ")
    if values.count == 2 {
        if let value0 = Int(values[0]), let value1 = Int(values[1]) {
            print(String.init(format: "%d", xnor(intToBool(value0), intToBool(value1))))
        }
    }
}

 

이전 소스에서 부호만 바뀌었습니다.

원래 문제가

"두 가지의 참 또는 거짓이 입력될 때, 참/거짓이 서로 같을 때에만 참이 계산되는 프로그램을 작성해보자!"

인데

짧게 핵심만 풀어 쓰다보니 코드가 참 쓸때없이 논리연산과정을 추가했다고 보이게 되네요.. ㅎㅎ

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

반응형

53. 콘솔에서 두 개의 정수(a,b)가 입력될때, a 와 b가 다를때 둘 중하나가 1일때만 1을 그외엔 0 을 출력하라.

입력: 1line으로 두 개의 정수가 공백을 두고 입력된다.

입력 범위: 0 ~ 1

입력 예시

1 1

출력 예시

0

JAVA

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
	    Boolean value0 = intToBool(scan.nextInt());
	    Boolean value1 = intToBool(scan.nextInt());
		scan.close();
		
		System.out.println(boolToInt(xor(value0,value1)));
	}
	static boolean xor(boolean value0,boolean value1) {
		return value0 != value1 ? true : false;
	}
	static boolean intToBool(int value) {
		return (value > -1) ? ((value == 0) ? false : true) : false;
	}
	static int boolToInt(boolean value) {
		return value ? 1 : 0;
	}
}

 

Swift 4.2

import Foundation

func intToBool(_ value:Int) -> Bool {
    return value > -1 ? (value == 0 ? false : true ): false
}
func xor(_ value0:Bool,_ value1:Bool) -> Bool {
    return value0 != value1 ? true : false
}

let line = readLine()
if line != nil {
    let values = line!.split(separator: " ")
    if values.count == 2 {
        if let value0 = Int(values[0]), let value1 = Int(values[1]) {
            print(String.init(format: "%d", xor(intToBool(value0), intToBool(value1))))
        }
    }
}

 

이전 소스에서 xor이 추가됐을뿐...

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

반응형

52. 콘솔에서 두 정수가 입력될때 둘 중 하나라도 1이 있으면 1을 둘다 0이면 0을 출력하라.

입력 : 1Line 으로 두 정수가 공백을 두고 입력됨

입력 범위 : 0 ~ 1

입력 예시

1 0

출력 예시

1

Java

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		Boolean targetValue = intToBool(scan.nextInt()) || intToBool(scan.nextInt());
		scan.close();
		System.out.println(boolToInt(targetValue));
	}
	static boolean intToBool(int value) {
		return (value > -1) ? ((value == 0) ? false : true) : false;
	}
	static int boolToInt(boolean value) {
		return value ? 1 : 0;
	}
}

 

Swift 4.2

import Foundation

func intToBool(_ value:Int) -> Bool {
    return value > -1 ? (value == 0 ? false : true ): false
}

let line = readLine()
if line != nil {
    let values = line!.split(separator: " ")
    if values.count == 2 {
        if let value0 = Int(values[0]), let value1 = Int(values[1]) {
            print(String.init(format: "%d", intToBool(value0) || intToBool(value1)))
        }
    }
}

이전 소스에서 부호만 변경했습니다.

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

 

 

반응형

51. 콘솔에서 두 정수가 입력될때 두 가지가 모두 1 일경우 1을 그외엔 0 을 출력해봐라.

입력 : 1Line 으로 두 정수가 공백을 두고 입력됨

입력 범위 : 0 ~ 1

입력 예시

1 1

출력 예시

1

JAVA

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		Boolean targetValue = intToBool(scan.nextInt()) && intToBool(scan.nextInt());
		scan.close();
		System.out.println(boolToInt(targetValue));
	}
	static boolean intToBool(int value) {
		return (value > -1) ? ((value == 0) ? false : true) : false;
	}
	static int boolToInt(boolean value) {
		return value ? 1 : 0;
	}
}

Swift 4.2

import Foundation

func intToBool(_ value:Int) -> Bool {
    return value > -1 ? (value == 0 ? false : true ): false
}

let line = readLine()
if line != nil {
    let values = line!.split(separator: " ")
    if values.count == 2 {
        if let value0 = Int(values[0]), let value1 = Int(values[1]) {
            print(String.init(format: "%d", intToBool(value0) && intToBool(value1)))
        }
    }
}

 

점차 왜 이렇게 짜고있을까 생각이들고있네요

c 기반으로 문법익히라고 만든 문제라 그런가 제 나름대로 이런걸 의도하고 했을꺼야! 라고 해석해서

의도 대로 최대한 비슷하게 만들어보고있는데

평소 심플이즈베스트를 외치고있어서 보기에 불편합니다.

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

 

 

반응형

옛날에 블로그에서 옴기던일을 다시 서서히 해보려합니다. 이왕 끝내놓은거 남겨두기 아까워서...

 

 

 

 

50. 콘솔에서 1 또는 0이 입력되었을때 반대로 출력하라

입력: 정수 1개가 입력됨

입력 범위 : 0 ~ 1

입력 예시

1

출력 예시

0

Java

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		System.out.println(intToBool(scan.nextInt()) ? 0 : 1);
        scan.close();
	}
	static boolean intToBool(int value) {
		return (value > -1) ? ((value == 0) ? false : true) : false;
	}
}

Swift 4.2

import Foundation

func intToBool(value:Int) -> Bool {
    return value > -1 ? (value == 0 ? false : true ): false
}

let line = readLine()
if line != nil {
    if let value = Int(line!) {
        print(String.init(format: "%d", !intToBool(value: value)))
    }
}

굳이 3항연산자를 써서 만들어봤습니다.

막상 해놓고 보니 별로 안이쁘네요

의미없는 짓이였습니다.

이번문제는 기초 100제의 반절인 50번문제가되는 기념비적인 문제라 예쁘게 해보고싶었는데 잘안되네요

C에서는 0이면 거짓 그외 양수면 참으로 인식해서 두줄이면 완료가될거같네요

아, 정수형변수를 바로 불형으로 바꿔 출력하는 연산자를 정의해주는게 더 예뻣을라나요?..

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

 

 

반응형

programmers.co.kr/learn/courses/30/lessons/42587

 

코딩테스트 연습 - 프린터

일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린

programmers.co.kr

이번 문제는 배열이 주어지고 정렬하는 문제로 보았다.

 

실 답을 구하려면 굳이 id를 정하고 정렬할 필요는 없어 보이지만 

실제 프린터라고 생각해서 하나의 작업에 대해 id를 각각 추가하여 작성해봤다.

 

정렬 순서는 문제에서 제시해준 3단계를 그대로 따라하면 간단히 된다.

 

난 총 세부분으로 소스를 나눠 작성했다

 

첫번째 - 주어진 priorities에 각각 id를 지정

두번째 - priorities를 정렬(

문제에서 주어짐, 첫번째 목록의 우선순위가 대기중인 작업의 우선순위보다 낮다면 무조건 대기순위 뒤로 이동 

대기중인 작업중 우선 순위가 더 큰게 없다면 대기순위에서 제거)

 

세번째 - 찾으려는 타깃이 언제 완료되는가 리턴 

 

 

  struct Work {
    let id:Character
    let priority:Int
  }
  
  func solution(_ priorities:[Int], _ location:Int) -> Int {
    var works = [Work]()
    var endArray = [Work]()
    var lastId:Character = "a"
    for priority in priorities {
      let work = Work(id: lastId, priority: priority)
      lastId = Character(Unicode.Scalar((lastId.unicodeScalars.first!.value) + 1)!)
      works.append(work)
    }

    guard location < works.count else { return -1 }
    let findTarget = works[location]
    
    while works.count > 0 {
      let target = works[0]
      var notFind = true
      for i in 1 ..< works.count {
        // 뒷 대기열에 큰게 있다면 notFind = false
      }
      if notFind {
      // 대기열에서 제거 endArray에 추가
      }
    }

    for i in 0 ..< endArray.count {
    // 찾으려는 id와 같은것의 i값 리턴
    }
    
    return -1
  }

 

 

전체 소스는 아래 깃허브 페이지에 있다.

github.com/wiwi-git/Programmers-learn/blob/master/swift/Practice/Practice/Printer.swift

 

wiwi-git/Programmers-learn

Contribute to wiwi-git/Programmers-learn development by creating an account on GitHub.

github.com

 

반응형

programmers.co.kr/learn/courses/30/lessons/42586

 

코딩테스트 연습 - 기능개발

프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는

programmers.co.kr

스택/큐 분류에 들어있는 문제다.

 

퍼센트지가 들어있는 배열(progresses)이 각각 루프 1당(문제에서의 하루) speeds 배열의 값 만큼 진행되어서

퍼센트지가 100%로 다 채워졌을때가 몇 루프인지 계산하는 문제이다.

 

계산시에 progresses의 값이 들어있는 순서대로 뒷 값이 작은게 몇개인지 저장하고 그 값을 리턴해주면 된다.

 

나는 우선 퍼센트지가 전부다 찼을때의 루프수를 저장해놓기위해 complete배열을 progresses배열의 수 만큼 작성해두고.

progresses를 foreach문을 통해 

내부에 while문으로 퍼센트치를 채워넣으면서 루프수(foreach문안의 변수 day)를 저장했다

 

그후 while문을 통해 complete배열이 앞값과 뒷값을 비교해가며 뒷값이 작을때 +1 뒷값이 클때 다시1 부터 카운트식으로 하여 코드를 짯다.

 

총 두 두분으로 나눠서 했다.

 

    var complete = Array<Int>(repeating: 0, count: progresses.count)
    
    for (i, persent) in progresses.enumerated() {
      var day = 0
      var persent = persent
      while persent < 100 {
        persent += speeds[i]
        day += 1
      }
      complete[i] = day
    }
    
    var i = 0
    var result = [Int]()
    while i < complete.count {
      var commit = 1
      if (i + 1) >= complete.count {
        result.append(commit)
        break
      }
      
      for k in (i + 1) ..< complete.count {
        if complete[i] >= complete[k] {
          commit += 1
        } else { break }
      }
      
      i += commit
      result.append(commit)
    }
    return result

라인 자체는 적어보이는데 두 번째 루프문부분, 값비교하는 부분이 뭔가 찝찝하다 

하지만 채점결과는 통과하니 그냥 넘어가련다. 생각하기 귀찮아졌다.

 

아래링크는 해당 소스가 올려놓은 깃허브 페이지이다.

 

github.com/wiwi-git/Programmers-learn/blob/master/swift/Practice/Practice/FunctionDevelopment.swift

 

wiwi-git/Programmers-learn

Contribute to wiwi-git/Programmers-learn development by creating an account on GitHub.

github.com

 

반응형

+ Recent posts