Tag - Ruby
57~64/67
-
2023-01-27 15:42:00 두 번째 수를 각 자리별로 잘라서 사용했다. Bash read a read b b3=${b::1} b2=${b:1:1} b1=${b:2} echo $((a * b1)) echo $((a * b2)) echo $((a * b3)) echo $((a * b)) Bash의 변수는 기본적으로 모두 문자열로 취급하며, 연산 시 알아서 숫자로 변환하는 특징을 가지고 있다. 필요시 declare 명령어로 자료형을 지정할 수도 있다. C #include <stdio.h> int main(void) { int a, b; scanf("%d", &a); scanf("%d", &b); int b1, b2, b3; b3 = b/100; b2 = (b-b3*100)/10; b1 = (b-b3*100)%10; printf("%d\n", a*b1); printf("%d\n", a*b2); printf("%d\n", a*b3); printf("%d\n", a*b); return 0; } Node.js let [a, b] = require("fs").readFileSync(0).toString().trim().split("\n").map(Number); let bs = (b+"").split("").map(Number); console.log(a*bs[2]); console.log(a*bs[1]); console.log(a*bs[0]); console.log(a*b); b+"" == String(b) PHP <?php fscanf(STDIN, "%d", $a); fscanf(STDIN, "%d", $b); $str = $b.""; list ($b3, $b2, $b1) = [$str[0], $str[1], $str[2]]; echo $a * $b1."\n"; echo $a * $b2."\n"; echo $a * $b3."\n"; echo $a * $b."\n"; ?> $b."" == strval($b) Python3 a = int(input()) b = int(input()) b3, b2, b1 = map(int, str(b)) print(a*b1) print(a*b2) print(a*b3) print(a*b) 숫자 385를 문자열로 바꾼 후 int로 매핑하면 리스트 [3, 8, 5]로 바뀐다. Ruby a = gets.chomp.to_i b = gets.chomp.to_i b3, b2, b1 = b.to_s.split("").map {|i| i.to_i} puts a*b1, a*b2, a*b3, a*b
-
2023-01-27 14:08:00 그냥 입력값 받고 주어진 대로 연산만 하면 되는 문제. Bash read a b c echo $(((a + b) % c)) echo $((((a % c) + (b % c)) % c)) echo $(((a * b) % c)) echo $((((a % c) * (b % c)) % c)) C #include <stdio.h> int main(void) { int a, b, c; scanf("%d %d %d", &a, &b, &c); printf("%d\n", (a+b)%c); printf("%d\n", ((a%c)+(b%c))%c); printf("%d\n", (a*b)%c); printf("%d\n", ((a%c)*(b%c))%c); return 0; } Node.js let [a, b, c] = require("fs").readFileSync(0).toString().trim().split(" ").map(Number); console.log((a+b)%c); console.log(((a%c)+(b%c))%c); console.log((a*b)%c); console.log(((a%c)*(b%c))%c); PHP <?php fscanf(STDIN, "%d %d %d", $a, $b, $c); echo ($a+$b)%$c."\n"; echo (($a%$c) + ($b%$c))%$c."\n"; echo ($a*$b)%$c."\n"; echo (($a%$c) * ($b%$c))%$c."\n"; ?> Python3 a, b, c = map(int, input().split()) print( (a+b)%c ) print( ((a%c)+(b%c))%c ) print( (a*b)%c ) print( ((a%c)*(b%c))%c ) Ruby a, b, c = gets.chomp.split().map {|i| i.to_i} puts (a+b)%c puts ((a%c) + (b%c)) puts (a*b)%c puts ((a%c) * (b%c))
-
2023-01-27 13:27:00 각 피스의 수에 입력받은 수를 빼면 된다. 배열 문제는 아니지만 배열을 사용하는 게 편해서.. 배열을 사용했다. Bash arr1=(1 1 2 2 2 8) read arr2 arr2=($arr2) for i in {0..5}; do echo -n $((arr1[i] - arr2[i]))" " done 입력받은 문자열을 arr2=($arr)를 사용하여 배열로 바꾼 것이다. Bash는 배열을 만들 때 쉼표가 아닌 공백을 기준으로 나누기 때문에 가능하다. 입력받을 때 a 옵션을 사용하여 바로 배열로 받을 수도 있다. (e.g. read -a arr2) {0..5} == 0 1 2 3 4 5 Bash의 for문은 in 뒤에 오는 모든 문자열을 순서대로 반복한다. C #include <stdio.h> int main(void) { int i[6] = {1, 1, 2, 2, 2, 8}; int a, b, c, d, e, f; scanf("%d %d %d %d %d %d", &a, &b, &c, &d, &e, &f); printf("%d %d %d %d %d %d\n", i[0]-a, i[1]-b, i[2]-c, i[3]-d, i[4]-e, i[5]-f); return 0; } Node.js const arr1 = [1, 1, 2, 2, 2, 8]; let arr2 = require("fs").readFileSync(0).toString().trim().split(" ").map(Number); let output = []; for (let i=0; i<6; i++) { output.push(arr1[i] - arr2[i]); } console.log(output.join(" ")); PHP <?php $arr1 = [1, 1, 2, 2, 2, 8]; $arr2 = explode(" ", fgets(STDIN)); for ($i=0; $i<6; $i++) { echo $arr1[$i] - $arr2[$i]." "; } ?> Python3 arr1 = 1, 1, 2, 2, 2, 8 arr2 = list(map(int, input().split())) output = [] for i in range(6): output.append(arr1[i] - arr2[i]) print(output.join(" ")) Ruby arr1 = 1, 1, 2, 2, 2, 8 arr2 = gets.chomp.split().map {|i| i.to_i} for i in 0...6 do print "#{arr1[i] - arr2[i]} " end
-
1998년생인 내가 태국에서는 2541년생?! (18108)
2023-01-27 13:15:00 두 수의 차인 543을 빼면 된다. Bash read year echo $((year - 543)) C #include <stdio.h> int main(void) { int year; scanf("%d", &year); printf("%d\n", year-543); return 0; } Node.js let year = Number(require("fs").readFileSync(0).toString().trim()); console.log(year - 543); PHP <?php fscanf(STDIN, "%d", $year); echo $year - 543; ?> Python3 print(int(input()) - 543) Ruby puts gets.chomp.to_i - 543 -
2023-01-27 12:25:00 입력받은 문자열에 문자열을 덧붙여 출력하면 된다. Bash read name echo $name??! 변수명에 특수기호는 포함되지 않기에 가능하다. 변수명에 사용되는 문자를 이어붙여야 한다면 ${var}abc 형식으로 사용하면 된다. C #include <stdio.h> int main(void) { char str[50]; scanf("%s", str); printf("%s\?\?!", str); return 0; } Node.js let name = require("fs").readFileSync(0).toString().trim(); console.log(name + "??!"); PHP <?php fscanf(STDIN, "%s", $name); echo $name."??!"; ?> Python3 print("{}??!".format(input())) Ruby puts gets.chomp + "??!"
-
2023-01-27 12:16:00 이 문제의 나누기는 몫을 출력하는 것이기 때문에 모두 정수 타입으로 계산하면 된다. Bash read a b echo $((a + b)) echo $((a - b)) echo $((a * b)) echo $((a / b)) echo $((a % b)) C #include <stdio.h> int main(void) { int a, b; scanf("%d %d", &a, &b); printf("%d\n", a + b); printf("%d\n", a - b); printf("%d\n", a * b); printf("%d\n", a / b); printf("%d\n", a % b); return 0; } Node.js let [a, b] = require("fs").readFileSync(0).toString().trim().split(" ").map(Number); console.log(a+b); console.log(a-b); console.log(a*b); console.log(Math.floor(a/b)); console.log(a%b); Math.floor 대신 parseInt를 사용해도 된다. PHP <?php fscanf(STDIN, "%d %d", $a, $b); echo $a + $b."\n"; echo $a - $b."\n"; echo $a * $b."\n"; echo floor($a / $b)."\n"; echo $a % $b."\n"; ?> PHP의 echo는 자동 줄바꿈이 되지 않는다. PHP는 분자열을 이어붙일 때 +가 아닌 .을 사용한다. Python3 a, b = map(int, input().split()) print(a+b) print(a-b) print(a*b) print(a//b) print(a%b) Ruby a, b = gets.chomp.split().map {|i| i.to_i} puts a+b puts a-b puts a*b puts a/b puts a%b
-
2023-01-27 12:02:00 몫이 아닌 전체 값을 출력해야 하기 때문에 데이터 타입에 주의해야 한다. Bash read a b let a*=10**10 let r=a/b n=0 if [ ${#r} -gt 10 ]; then n=${r::1} r=${r:1} fi echo $n.$r Bash는 연산 시 소수부를 모두 버리기 때문에 오차 범위만큼 곱한 후 계산하고 점은 직접 넣어야 한다. let r=a/b 대신 ((r = a/b))를 사용할 수 있다. 2, 3번 라인을 ((a *= 10**10, r = a/b)) 이 한 줄로 줄일 수 있다. 백준에서는 먹히지 않는 awk, bc 명령어를 사용하면 소수부까지 출력할 수 있다. C #include <stdio.h> int main(void) { double a, b; scanf("%lf %lf", &a, &b); printf("%.9lf", a / b); return 0; } int, float 타입이 아닌 double을 사용해야 한다. Node.js let [a, b] = require("fs").readFileSync(0).toString().trim().split(" ").map(Number); console.log(a / b); PHP <?php fscanf(STDIN, "%d %d", $a, $b); echo $a / $b; ?> Python3 a, b = map(int, input().split()) print(a/b) Python2와 달리 Python3은 정수끼리 나눠도 소수부까지 연산이 가능하다. Ruby a, b = gets.chomp.split().map {|i| i.to_f} puts a/b 정수형인 to_i가 아니라 실수형인 to_f다.
-
2023-01-27 11:57:00 간단한 곱셈 이전 문제에서 부호만 바꾸면 된다. Bash read a b echo $((a * b)) C #include <stdio.h> int main(void) { int a, b; scanf("%d %d", &a, &b); printf("%d", a*b); return 0; } Node.js let [a, b] = require("fs").readFileSync(0).toString().trim().split(" ").map(Number); console.log(a * b); PHP <?php fscanf(STDIN, "%d %d", $a, $b); echo $a * $b; ?> Python3 a, b = map(int, input().split()) print(a*b) Ruby a, b = gets.chomp.split().map {|i| i.to_i} puts a*b