Tag - Ruby
17~24/67
-
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()
-
2023-02-18 18:05:00 주어진 단어에서 제일 많은 알파벳은? Bash read str str="${str^^}" arr=(0 "") for x in {A..Z}; do cnt=${str//[^$x]/} cnt=${#cnt} if [ $cnt == 0 ]; then continue elif [ "${arr[0]}" -le $cnt ]; then if [ $arr -lt $cnt ]; then arr[0]=$cnt arr[1]="" fi arr[1]+=$x fi done test ${#arr[1]} == 1 && echo ${arr[1]} || echo ? ${var^^}: 모두 대문자로 변환 ${var,,}: 모두 소문자로 변환 하지만 시간 초과.. Node.js const str = require("fs").readFileSync(0).toString().trim().toUpperCase().split(""); const set = str.filter((r, i) => { return str.indexOf(r) == i; }); let arr = [0, ""]; for (let x of set) { let n = str.filter(s => s == x).length; if (arr[0] <= n) { if (arr[0] < n) { arr[0] = n; arr[1] = ""; } arr[1] += x; } } console.log(arr[1].length == 1 ? arr[1] : "?"); Python3 a = input().upper() ls = set(a) arr = [0, ""] for x in ls: n = a.count(x) if arr[0] <= n: if arr[0] < n: arr[0] = n arr[1] = "" arr[1] += x print(arr[1] if len(arr[1])==1 else "?") Ruby str = gets.chomp.upcase() set = ("A".."Z").to_a & str.split("") arr = [0, ""] for x in set n = str.count(x) if arr[0] <= n if arr[0] < n arr[0] = n arr[1] = "" end arr[1] += x end end puts arr[1].size == 1 ? arr[1] : "?" and 연산을 이용하여 A to Z 중 입력받은 문자열에 존재하는 알파벳만 남기는 방식.
-
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
-
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와 마찬가지로 알파벳도 가능하다.
-
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()
-
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
-
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