Tag - Python3

33~40/68
  • 최소, 최대 (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 처럼 사용할 수도 있다.
  • A + B - 5 (10952)

    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
  • 별 찍기 - 2 (2439)

    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
  • 별 찍기 - 1 (2438)

    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