Tag - Ruby
33~40/67
-
2023-01-30 21:56:00 “보다 작은”은 주어진 수를 포함하지 않는다. Bash read n x read arr for i in $arr; do if [ $i -lt $x ]; then echo -n $i" " fi done C #include <stdio.h> int main(void) { int n, x; scanf("%d %d", &n, &x); int arr[n]; for (int i=0; i<n; i++) { scanf("%d", &arr[i]); } for (int i=0; i<n; i++) { if (arr[i] < x) { printf("%d ", arr[i]); } } return 0; } Node.js let [n, x, ...arr] = require("fs").readFileSync(0).toString().trim().split(/ |\n/).map(Number); console.log( arr.filter(i => i < x).join(" ") ); PHP <?php list ($n, $x) = explode(" ", trim(fgets(STDIN))); $arr = explode(" ", trim(fgets(STDIN))); $cnt = 0; foreach ($arr as $a) { if ($a < $x) { echo "$a "; } } ?> Python3 n, x = map(int, input().split()) arr = map(int, input().split()) arr = list(filter(lambda i: i < x, arr)) print( " ".join(map(str, arr)) ) Python은 lambda를 지원한다. Ruby n, x = gets.chomp.split().map {|i| i.to_i} arr = gets.chomp.split().map {|i| i.to_i} puts arr.select {|i| i < x}.join(" ")
-
2023-01-30 21:16:00 배열 안에 n은 몇 개? Bash read n read arr read v cnt=0 for x in $arr; do ((cnt += x == v ? 1 : 0)) done echo $cnt 배열을 사용하지 않았..다. C #include <stdio.h> int main(void) { int n, v; int arr[n]; scanf("%d", &n); for (int i=0; i<n; i++) { scanf("%d", &arr[i]); } scanf("%d", &v); int cnt = 0; for (int i=0; i<n; i++) { if (arr[i] == v) { cnt++; } } printf("%d\n", cnt); return 0; } Node.js let [n, ...arr] = require("fs").readFileSync(0).toString().trim().split(/ |\n/).map(Number); let v = arr.pop(); console.log( arr.filter(x => x == v).length ); filter를 사용하여 배열 arr에 v와 같은 값만 남기는 방식이다. PHP <?php fscanf(STDIN, "%d", $n); $arr = explode(" ", trim(fgets(STDIN))); fscanf(STDIN, "%d", $v); $cnt = 0; foreach ($arr as $x) { if ($x == $v) { $cnt++; } } echo $cnt; ?> Python3 n = int(input()) arr = list(map(int, input().split())) v = int(input()) print( arr.count(v) ) Ruby n = gets.chomp.to_i arr = gets.chomp.split().map {|i| i.to_i} v = gets.chomp.to_i puts arr.count(v)
-
2023-01-29 20:52:00 반복문을 몇 번 돌았는지 묻는 문제. Bash read n m=$n i=1 while :; do a=$((m%10)) b=$((m/10 + a)) m=$((a*10 + b%10)) if [ $m == $n ]; then break fi ((i++)) done echo $i C #include <stdio.h> int main(void) { int n; scanf("%d", &n); int m = n, i = 0; do { int a = m%10; int b = m/10 + a; m = a*10 + b%10; i++; } while (n != m); printf("%d\n", i); return 0; } Node.js let n = Number(require("fs").readFileSync(0).toString().trim()); let m = n; let i = 0; do { let a = m%10; let b = Math.floor(m/10) + a; m = a*10 + b%10; i++; } while (m != n); console.log(i); PHP <?php fscanf(STDIN, "%d", $n); $m = $n; $i = 0; do { $a = $m%10; $b = floor($m/10) + $a; $m = $a*10 + $b%10; $i++; } while ($n != $m); echo $i; ?> Python3 n = int(input()) m, i = n, 1 while 1: a = m%10 b = m//10 + a m = a*10 + b%10 if n==m: break i += 1 print(i) Ruby n = gets.chomp.to_i m, i = n, 0 loop do a = m%10 b = m/10 + a m = a*10 + b%10 i+=1 break if n == m end puts i Updated 반복문의 12번 문제였으나 제외되었다.
-
2023-01-29 20:11:00 아무것도 입력하지 않으면 반복문을 빠져나온다. Bash while :; do read a b if [ "$a$b" == "" ]; then break fi echo $((a + b)) done Node.js let list = require("fs").readFileSync(0).toString().trim().split("\n"); for (let l of list) { let [a, b] = l.split(" ").map(Number); console.log(a+b); } PHP <?php while (1) { unset($a, $b); fscanf(STDIN, "%d %d", $a, $b); if ($a == "" || $b == "") { break; } echo $a + $b."\n"; } ?> Python3 try: while 1: a, b = map(int, input().split()) print(a+b) except: pass Ruby begin while 1 a, b = gets.chomp.split().map {|i| i.to_i} puts a+b end rescue nil end begin == 다른 언어의 try rescue는 cache, except와 같은 기능을 하며, else, ensure 등의 기능이 더 있다. nil은 null와 비슷한 역할을 하지만, Python의 pass 처럼 사용할 수도 있다.
-
2023-01-29 19:49:00 입력한 값이 0 0이면 반복문을 빠져나온다. Bash while :; do read a b if [ "$a$b" == "00" ]; then break fi echo $((a + b)) done while : == while true == 무한루프 C #include <stdio.h> int main(void) { int a, b; while (1) { scanf("%d %d", &a, &b); if (a == 0 && b == 0) { break; } printf("%d\n", a+b); } return 0; } Node.js let list = require("fs").readFileSync(0).toString().trim().split("\n"); for (let l of list.slice(0,-1)) { let [a, b] = l.split(" ").map(Number); console.log(a+b); } PHP <?php while (1) { fscanf(STDIN, "%d %d", $a, $b); if ($a == 0 && $b == 0) { break; } echo $a + $b."\n"; } ?> Python3 while 1: a, b = map(int, input().split()) if a==0 and b==0: break print(a+b) Ruby while 1 a, b = gets.chomp.split().map {|i| i.to_i} break if a==0 and b==0 puts a+b end
-
2023-01-29 18:25:00 빈 공간은 출력하지 않는 게 아니라 공백 한 칸을 출력해야 한다. Bash read n for ((i=1; i<=n; i++)); do o="" for ((j=0; j<i; j++)); do o+=\* done printf "%${n}s\n" "$o" done printf 명령어를 사용하여 n 자리로 출력하며 문자는 오른쪽으로 정렬. 왼쪽 정렬은 %-5s 형식, 중앙 정렬은 없다. 다른 언어와 달리 자릿수를 지정할 때 변수를 사용할 수 있기 때문에 가능한 방법. C #include <stdio.h> int main(void) { int n; scanf("%d", &n); for (int i=1; i<=n; i++) { for (int j=0; j<n-i; j++) { printf(" "); } for (int j=0; j<i; j++) { printf("*"); } printf("\n"); } return 0; } Node.js let n = Number(require("fs").readFileSync(0).toString().trim()); for (let i=1; i<=n; i++) { let o = []; for (let j=0; j<n; j++) { o.push(j < n-i ? " " : "*"); } console.log(o.join("")); } PHP <?php fscanf(STDIN, "%d", $n); for ($i=1; $i<=$n; $i++) { $o = []; for ($j=0; $j<$n; $j++) { array_push($o, $j < $n-$i ? " " : "*"); } echo join("", $o)."\n"; } ?> Python3 n = int(input()) for i in range(1, n+1): o = [] for j in range(n): o.append(" " if j < n-i else "*") print("".join(o)) Ruby n = gets.chomp.to_i for i in 1..n o = [] for j in 0...n o.push(j < n-i ? " " : "*") end puts o.join("") end
-
2023-01-29 18:09:00 이중 for문을 사용해야 한다. Bash read n for ((i=1; i<=n; i++)); do for ((j=0; j<i; j++)); do printf \* done echo done Bash에도 printf 명령어가 있다. echo 명령어에 -n 옵션을 사용하면 출력 후 줄바꿈을 하지 않기 때문에 printf 대신 echo -n을 사용해도 된다. C #include <stdio.h> int main(void) { int n; scanf("%d", &n); for (int i=1; i<=n; i++) { for (int j=0; j<i; j++) { printf("*"); } printf("\n"); } return 0; } Node.js let n = Number(require("fs").readFileSync(0).toString().trim()); let o = ""; for (let i=1; i<=n; i++) { o = ""; for (let j=0; j<i; j++) { o+="*"; } console.log(o); } PHP <?php fscanf(STDIN, "%d", $n); for ($i=1; $i<=$n; $i++) { for ($j=0; $j<$i; $j++) { echo "*"; } echo "\n"; } ?> Python3 n = int(input()) for i in range(n): print("*"*(i+1)) Ruby n = gets.chomp.to_i for i in 1..n puts "*"*i end
-
2023-01-29 18:00:00 이전 문제에서 출력 형식만 바꾸면 된다. Bash read n for ((i=0; i<n; i++)); do read a b echo Case \#$i: $a + $b = $((a + b)) done C #include <stdio.h> int main(void) { int n, a, b; scanf("%d", &n); for (int i=0; i<n; i++) { scanf("%d %d", &a, &b); printf("Case #%d: %d + %d = %d\n", i+1, a, b, a+b); } return 0; } Node.js let [n, ...list] = require("fs").readFileSync(0).toString().trim().split("\n"); for (let i in list) { let [a, b] = list[i].split(" ").map(Number); console.log(`Case #${i*1+1}: ${a} + ${b} = ${a+b}`); } PHP <?php fscanf(STDIN, "%d", $n); for ($i=1; $i<=$n; $i++) { fscanf(STDIN, "%d %d", $a, $b); echo "Case #$i: $a + $b = ".$a + $b."\n"; } ?> Python3 n = int(input()) for i in range(n): a, b = map(int, input().split()) print("Case #{}: {} + {} = {}".format(i+1, a, b, a+b)) Ruby n = gets.chomp.to_i for i in 1..n a, b = gets.chomp.split(" ").map {|i| i.to_i} puts "Case ##{i}: #{a} + #{b} = #{a+b}" end