Tag - PHP

9~16/46
  • 나머지 (3052)

    2023-02-01 21:30:00 42로 나눴을 때 나올 수 있는 나머지의 수 Bash arr=() for i in {1..10}; do read n n=$((n % 42)) if ! [[ " ${arr[@]} " =~ " $n " ]]; then arr+=($n) fi done echo ${#arr[@]} arr+=($n) == 배열 마지막에 원소 추가 C #include <stdio.h> int main(void) { int arr[42] = {0,}; int n; for (int i=0; i<10; i++) { scanf("%d", &n); arr[n%42]++; } n = 0; for (int i=0; i<42; i++) { if (arr[i] != 0) { n++; } } printf("%d\n", n); return 0; } Node.js let arr = require("fs").readFileSync(0).toString().trim().split("\n").map(x => Number(x) % 42); arr = [...new Set(arr)]; console.log( arr.length ); 중복 값 제거 PHP <?php $arr = []; for ($i=0; $i<10; $i++) { fscanf(STDIN, "%d", $n); $v = $n % 42; if (array_search($v, $arr) == "") { array_push($arr, $v); } } echo count($arr); ?> Python3 arr = [] for i in range(10): n = int(input()) % 42 if n not in arr: arr.append(n) print(len(arr)) Ruby arr = [] for i in 1..10 n = gets.chomp.to_i % 42 if not arr.include?(n) arr.push(n) end end puts arr.size
  • 과제 안 내신 분..? (5597)

    2023-01-31 22:36:00 1부터 30중에 빠진 숫자를 찾아라! 1부터 30까지의 문자열을 미리 준비해놓고 입력한 수를 제거한다. 1부터 30까지 반복문을 돌리며 미리 입력받은 값에 해당 수가 있는지 체크한다. Bash arr=" `echo {1..30}` " for i in {1..28}; do read n arr=${arr/ $n / } done arr=${arr# } echo "${arr/ /$'\n'}" C #include <stdio.h> int main(void) { int arr[28]; for (int i=0; i<28; i++) { scanf("%d", &arr[i]); } int idx; for (int n=1; n<=30; n++) { idx = -1; for (int i=0; i<28; i++) { if (arr[i] == n) { idx = i; break; } } if (idx == -1) { printf("%d\n", n); } } return 0; } Node.js let arr = [...Array(30).keys()].map(x => x + 1); let input = require("fs").readFileSync(0).toString().trim().split("\n").map(Number).sort(); for (let n of input) { arr.splice(arr.indexOf(n), 1); } console.log(arr.join("\n")); PHP <?php $arr = range(1, 30); for ($i=0; $i<28; $i++) { fscanf(STDIN, "%d", $n); $idx = array_search($n, $arr); unset($arr[$idx]); } echo join("\n", $arr); ?> Python3 arr = [i for i in range(1, 31)] for i in range(28): n = int(input()) arr.remove(n) print( "\n".join(map(str, arr)) ) Ruby arr = Array(1..30) for i in 0...28 n = gets.chomp.to_i arr.delete_at(arr.index(n)) end puts arr
  • 최댓값 (2562)

    2023-01-31 22:13:00 최댓값은 어디에 있을까? Bash arr=(0 0) for i in {1..9}; do read n if [ ${arr[0]} -lt $n ]; then arr[0]=$n arr[1]=$i fi done echo $arr echo ${arr[1]} Bash는 배열에서 인덱스를 지정하지 않으면 첫 번째 원소가 사용된다. C #include <stdio.h> int main(void) { int n; int arr[2] = {0, 0}; for (int i=0; i<9; i++) { scanf("%d", &n); if (arr[0] < n) { arr[0] = n; arr[1] = i+1; } } printf("%d %d\n", arr[0], arr[1]); return 0; } Node.js let [...arr] = require("fs").readFileSync(0).toString().trim().split("\n").map(Number); let max = Math.max(...arr); console.log( max, arr.indexOf(max)+1 ); PHP <?php $arr = []; for ($i=0; $i<9; $i++) { fscanf(STDIN, "%d", $n); array_push($arr, $n); } $max = max($arr); echo $max."\n"; echo array_search($max, $arr)+1; ?> Python3 arr = [] for i in range(9): arr.append(int(input())) m = max(arr) print(m, arr.index(m)+1) Ruby arr = [] for i in 0...9 arr[i] = gets.chomp.to_i end max = arr.max() puts "#{max} #{(arr.index max) + 1}"
  • 최소, 최대 (10818)

    2023-01-30 22:33:00 최솟값과 최댓값 Bash read n read arr # # arr=(`echo $arr | tr " " "\n" | sort -n`) # arr=(`echo "${arr// /$'\n'}" | sort -n`) # echo "$arr ${arr[${#arr[@]}-1]}" arr2=(${arr%% *} 0) for i in $arr; do if [ $i -lt ${arr2[0]} ]; then arr2[0]=$i; fi if [ $i -gt ${arr2[1]} ]; then arr2[1]=$i; fi done echo ${arr2[@]} tr, sort도 안된다.. 그냥 문제 푸는데 필요한 명령어 외에는 다 안되는 듯하다. 그래서 반복문을 돌려야 하는데 죄다 시간 초과가 걸린다.. 결론은 위 두 방법 다 답은 나오지만 백준에서는 되지 않는다. C #include <stdio.h> int main(void) { int n, m; scanf("%d", &n); int arr[2] = {0, 0}; for (int i=0; i<n; i++) { scanf("%d", &m); if (i == 0) { arr[0] = m; arr[1] = m; } else if (m < arr[0]) { arr[0] = m; } else if (arr[1] < m) { arr[1] = m; } } printf("%d %d\n", arr[0], arr[1]); return 0; } Node.js let [n, ...arr] = require("fs").readFileSync(0).toString().trim().split(/ |\n/).map(Number); console.log( Math.min(...arr), Math.max(...arr) ) PHP <?php fscanf(STDIN, "%d", $n); $arr = explode(" ", trim(fgets(STDIN))); echo min($arr)." ".max($arr); ?> Python3 n = int(input()) arr = sorted(map(int, input().split())) print(arr[0], arr[-1]) 오름차순 정렬 후 첫 번째와 마지막 원소를 출력. Ruby n = gets.chomp.to_i arr = gets.chomp.split().map {|i| i.to_i} puts "#{arr.min()} #{arr.max()}"
  • X보다 작은 수 (10871)

    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(" ")
  • 개수 세기 (10807)

    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)
  • 더하기 사이클 (1110)

    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번 문제였으나 제외되었다.
  • A + B - 4 (10951)

    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 처럼 사용할 수도 있다.