Tag - Bash

17~24/62
  • 상수 (2908)

    2023-02-19 15:10:00 숫자를 뒤집은 후 큰 수를 찾아라. Bash rev() { echo ${1: -1}${1:1:1}${1::1} } read n m n=`rev $n` m=`rev $m` echo $((n < m ? m : n)) rev 명령어를 사용할 수 없으므로 직접 문자열을 뒤집어야 한다. Node.js const arr = require("fs").readFileSync(0).toString().trim().split(" ").map(x => x.split("").reverse().join("")*1); console.log( Math.max(...arr) ); JavaScript는 배열만 뒤집을 수 있어서 문자열을 하나씩 잘라 배열로 만든 후 뒤집고 다시 합친 것이다. Python3 arr = map(int, input()[::-1].split(" ")) print( max(arr) ) Python3에도 reverse, reversed 함수가 있지만 이는 배열에만 적용되고, 문자열은 var[::-1]로 뒤집을 수 있다. Ruby arr = gets.chomp.split().map {|i| i.reverse().to_i} puts arr.max()
  • 단어의 개수 (1152)

    2023-02-19 14:56:00 문자열을 공백을 기준으로 자른 후 나온 단어의 개수는? Bash read -a arr echo ${#arr[@]} Node.js const arr = require("fs").readFileSync(0).toString().trim().split(" "); console.log(arr.length); 왜 틀린 건지 모르겠다.. Python3 print( len(input().split()) ) Ruby puts gets.chomp.split().size
  • 문자열 반복 (2675)

    2023-02-18 17:52:00 문자열의 모든 문자를 r번 반복하라. Bash read t for ((i=0; i<t; i++)); do read r s while [ "$s" != "" ]; do for ((j=0; j<r; j++)); do echo -n "${s::1}" done s="${s:1}" done echo done Node.js const [t, ...str] = require("fs").readFileSync(0).toString().trim().split("\n"); for (let [r, s] of str.map(x => x.split(" "))) { let arr = []; for (let x of s) { for (let i=0; i<r; i++) { arr.push(x); } } console.log(arr.join("")); } Python3 t = int(input()) for i in range(t): r, s = input().split() for x in s: for j in range(int(r)): print(x, end='') print() Ruby t = gets.chomp.to_i for i in 0...t r, s = gets.chomp.split() for x in s.split("") for j in 0...r.to_i print x end end puts end
  • 알파벳 찾기 (10809)

    2023-02-17 18:14:00 각 알파벳이 처음 위치한 곳은? Bash read str for x in {a..z}; do idx=-1 bak="$str" for ((i=0; 0<${#bak}; i++)); do if [ "${bak::1}" == "$x" ]; then idx=$i break fi bak="${bak:1}" done echo -n "$idx " done {0..5}를 사용해서 0부터 5까지의 숫자를 사용하는 것처럼 알파벳도 가능하다. Node.js const str = require("fs").readFileSync(0).toString().trim(); let arr = []; for (let i='a'.charCodeAt(0); i<'z'.charCodeAt(0)+1; i++) { let x = String.fromCharCode(i); arr.push( str.indexOf(x) ); } console.log( arr.join(" ") ); 아스키 코드를 이용하여 a부터 z까지의 알파벳을 가져오는 방식. a의 아스키 코드는 97, z의 아스키 코드는 122이므로 for (let i=97; i<123; i++) {...}으로 사용해도 된다. Python3 s = input() for x in range(ord('a'), ord('z')+1): print(s.find(chr(x)), end=' ') JavaScript와 같은 이유로 range(97, 123)으로 사용해도 된다. Ruby str = gets.chomp for x in 'a'..'z' n = str.index(x) print "#{n ? n : -1} " end Bash와 마찬가지로 알파벳도 가능하다.
  • 숫자의 합 (11720)

    2023-02-17 17:46:00 주어진 수의 각 자릿수를 모두 더한 값은? Bash read n read m #while [ $m != 0 ]; do # ((t += m%10, m /= 10)) #done for ((i=0; i<$n; i++)); do add=${m:$i:1} ((t += add)) done echo $t 주석 처리된 코드는 백준에서 틀린 답이라고 나온다. Node.js const [n, num] = require("fs").readFileSync(0).toString().trim().split("\n"); const arr = num.split("").map(Number); console.log( arr.reduce((r, x, i) => { return r+x; }) ); Python3 n = int(input()) arr = map(int, list(input())) print( sum(arr) ) Ruby n = gets.chomp.to_i arr = gets.chomp.split("").map {|i| i.to_i} puts arr.sum()
  • 아스키 코드 (11654)

    2023-02-16 16:37:00 문자를 숫자형으로 출력하면 아스키 코드가 나오기도 한다. Bash read str printf '%d\n' "'$str" $str 앞의 따옴표는 뒤에 오는 문자를 아스키 코드로 출력하기 위해 넣어줘야 한다. C #include <stdio.h> int main(void) { char str; scanf("%c", &str); printf("%d\n", str); return 0; } Node.js let str = require("fs").readFileSync(0).toString().trim(); console.log( str.charCodeAt(0) ); PHP <?php fscanf(STDIN, "%c", $x); echo ord($x); ?> Python3 print(ord(input())) Ruby puts gets.chomp.ord
  • 한수 (1065)

    2023-02-04 19:45:00 100 미만인 자연수는 무조건 한수다. Bash f_cus() { if [ $1 -lt 100 ]; then return 0; fi o=$(($1%10 - $1/10%10)) n=$(($1 / 10)); while [ 10 -le $n ]; do if [ $((n/10%10 + o)) != $((n % 10)) ]; then return 1; fi n=$((n / 10)) done return 0 } read n cnt=0 for ((i=n; 0<i; i--)); do if f_cus $i; then ((cnt++)) fi done echo $cnt C #include <stdio.h> #include <stdbool.h> #include <math.h> bool f_cus(int n) { if (n < 100) return true; int o = n%10 - n/10%10; n /= 10; while (10 <= n) { if (floor(n/10%10) + o != n%10) return false; n /= 10; } return true; } int main(void) { int n, cnt = 0; scanf("%d", &n); for (int i=1; i<=n; i++) { if (f_cus(i)) cnt += 1; } printf("%d\n", cnt); return 0; } Node.js const f_cus = function(n) { if (n < 100) return true; sn = n+""; o = sn[1]*1 - sn[0]*1; for (let i=1; i<sn.length-1; i++) { if (sn[i]*1 + o != sn[i+1]*1) return false; } return true; } let n = Number(require("fs").readFileSync(0).toString().trim()); let cnt = 0; for (let i=1; i<=n; i++) { if (f_cus(i)) cnt += 1; } console.log(cnt); PHP <?php function f_cus($n) { if ($n < 100) return true; $bak = $n; $o = $n%10 - $n/10%10; $n = floor($n/10); while (10 <= $n) { if (floor($n/10%10) + $o != $n%10) return false; $n = floor($n/10); } return true; } fscanf(STDIN, "%d", $n); $cnt = 0; for ($i=1; $i<=$n; $i++) { if (f_cus($i)) $cnt += 1; } echo $cnt; ?> Python3 def f_cus(n): if n < 100: return True sn = str(n) o = int(sn[1]) - int(sn[0]) for i in range(1, len(sn)-1): if int(sn[i]) + o != int(sn[i+1]): return False return True n = int(input()) cnt = 0 for i in range(1, n+1): if f_cus(i): cnt+=1 print(cnt) Ruby def f_cus(n) return true if n < 100 sn = n.to_s o = sn[1].to_i - sn[0].to_i for i in 1...sn.size-1 return false if sn[i].to_i + o != sn[i+1].to_i end return true end n = gets.chomp.to_i cnt = 0 for i in 1..n cnt+=1 if f_cus(i) end puts cnt
  • OX퀴즈 (8958)

    2023-02-02 21:30:00 한 게임당 얻을 수 있는 최대 점수는? Bash read n for ((i=0; i<n; i++)); do read oxs g=0 sum=0 for ((j=0; j<${#oxs}; j++)); do [ "${oxs:$j:1}" == "O" ] && g=$((g + 1)) || g=0 sum=$((sum + g)) done echo $sum done C #include <stdio.h> #include <string.h> int main(void) { int n, g, sum; scanf("%d", &n); for (int i=0; i<n; i++) { sum = 0; char input[n+1]; scanf("%s", input); for (int j=0; j<strlen(input); j++) { g = input[j] == 'O' ? g + 1 : 0; sum += g; } printf("%d\n", sum); } return 0; } Node.js let [n, ...input] = require("fs").readFileSync(0).toString().trim().split("\n"); for (let oxs of input) { let g = 0; let sum = 0; for (let ox of oxs.split("")) { let g = ox == "O" ? g + 1 : 0 sum += g; } console.log(sum); } PHP <?php fscanf(STDIN, "%d", $n); for ($i=0; $i<$n; $i++) { $g = 0; $sum = 0; $oxs = trim(fgets(STDIN)); for ($j=0; $j<strlen($oxs); $j++) { $g = $oxs[$j] == "O" ? $g+1 : 0; $sum += $g; } echo $sum."\n"; } ?> Python3 n = int(input()) for i in range(n): oxs = input() arr = [0] for ox in oxs: g = arr[-1] + 1 if ox == "O" else 0 arr.append(g) print(sum(arr)) Ruby n = gets.chomp.to_i for i in 0...n oxs = gets.chomp.split("") arr = [0] for ox in oxs g = ox == "O" ? arr[-1] + 1 : 0 arr.push(g) end puts arr.sum() end Updated 1차원 배열의 8번 문제였으나 제외되었다.