41~48/91
  • 숫자의 합 (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
  • 소프트웨어 자동 업데이트 기능 켜기/끄기

    2023-02-16 14:18:00 우분투는 자동으로 업데이트가 가능한 소프트웨어가 있는지 체크하고 있다면 업데이트하라고 창을 띄워 알려준다. 갑자기 창이 뜨는 게 거슬리고 불편하기도 하고, 체크하는 동안 apt 명령어를 사용하지 못하기 때문에 이 기능을 아예 꺼버리려고 한다. 설정 먼저 메뉴에서 “Software & Updates” 앱을 찾아 들어간다. “&”이 없는 앱을 선택하면 즉시 업데이트가 실행된다. “Updates” 탭으로 들어가서 “Automatically check for updates” 값을 원하는 “Never”로 변경하면 끝. “Never” 대신 자동 업데이트를 실행할 주기를 선택할 수도 있다. 다시 설정 그래도 계속 업데이트 하라는 창이 뜬다..? 캡쳐했는데 실수로 삭제해버렸다. 천천히 다른 방법을 찾아봐야지..
  • 나의 라즈베리 파이

    2023-02-14 14:25:00 라즈베리 파이는 동명의 재단에서 만든 초소형 초저가의 싱글 보드 컴퓨터다. 나의 라즈베리 파이 및 주변장치 Raspberry Pi 4 Model B (8GB) Raspberry Pi OS (64-bit, Bullseye) 쿨링 팬 SSD 500GB x2 모니터, 키보드, 마우스, USB 허브 원래 데스크탑을 사려다가 라즈베리 파이로 바꿔서 예상 가격이 확 낮아진 탓에 제일 비싼 모델로 샀다. 그래봤자 가격이 오르기 전이라 국내 판매처임에도 당시 약 10만 원이었다. 지금은 20만 원.. 부팅은 USB 포트에 연결된 SSD로 부팅하기 때문에 SD카드는 이제 쓸 일이 없다. 반도체 부족 사태로 인해 처음으로 가격이 올랐으며, 문제가 완화되면 가격을 원래대로 되돌릴 예정이라고 한다.
  • 리눅스에서 한/영 키, 한자 키 사용하기

    2023-02-12 17:31:00 요즘 나오는 키보드는 [Alt] 키와 [한/영] 키, [Ctrl] 키와 [한자] 키가 통합되어 나오는 경우가 많다. 하지만 리눅스에서는 해당 키를 [Alt], [Ctrl] 키로만 인식하기 때문에 [한/영], [한자] 키로 사용하려면 따로 설정해야 한다. 참고로 이 설정을 하면 오른쪽의 [Alt], [Ctrl] 키는 제 기능을 못 하게 된다. 하지만 평소에 이 키를 사용할 일이 없어서 불편한 적은 단 한 번도 없었다. 한/영 키 /usr/share/X11/xkb/symbols/altwin 파일에서 Alt_R, Meta_R을 Hangul로 수정하면 오른쪽의 [Alt] 키가 [한/영] 키로 인식하게 된다. 한자 키 /usr/share/X11/xkb/symbols/pc 파일에서 Control_R을 Hangul_Hanja로 수정하면 오른쪽의 [Ctrl] 키가 [한자] 키로 인식하게 된다. 사진에서는 잘 안 보이지만 Hangul와 Hanja 사이에 언더바(_)가 있다.
  • 한수 (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
  • 셀프 넘버 (4673)

    2023-02-04 12:10:00 굳이 함수를 만들 필요가 없는 문제지만.. 함수 문제니 만들어야지.. Bash f_sum() { local s=$1 local i=0 for ((i=0; i<${#1}; i++)); do s=$((s + ${1:$i:1})) done echo $s } arr=({1..10000}) for i in {1..10000}; do s=`f_sum $i` idx=-1 for ((j=0; j<${#arr[@]}; j++)); do if [ ${arr[$j]} == $s ]; then idx=$j break fi done if [ $idx != -1 ]; then arr=(${arr[@]::$idx} ${arr[@]:$idx+1}) fi done for x in ${arr[@]}; do echo $x done Bash에서 함수는 사용법, 파라미터 받는 법 등 모든 게 명령어와 똑같이 사용된다. 즉, Bash는 함수에서도 return을 종료코드로 사용하기 때문에 이를 사용하여 문자열을 리턴할 수 없다. 물론 숫자를 리턴해서 $?로 값을 받으면 되긴 하지만 0은 정상적인 종료, 그 외는 비정상적인 종료를 의미하기 때문에 사용하지 않는 것이 좋다. 대신 함수 내에서 리턴하고 싶은 문자열을 출력하고 그 값을 받으면 된다. 다른 언어들과 달리 Bash는 함수 내에서 변수를 선언하면 기본적으로 전역변수로 선언된다. 지역변수로 선언하려면 local 명령어를 사용하면 된다. (e.g. local var=val) 하지만… 이 문제는 시간이 굉장히 오래 걸려서 시간 초과가 뜬다. C #include <stdio.h> int f_sum(int n) { int s = n; while (0 < n) { s += n%10; n /= 10; } return s; } int main(void) { int arr[10000] = {0,}; for (int i=1; i<=10000; i++) { int s = f_sum(i); if (s <= 10000) { arr[s-1] = 1; } } for (int i=0; i<10000; i++) { if (arr[i] != 1) { printf("%d\n", i+1); } } return 0; } Node.js const f_sum = function(n) { let s = n; for (let m of n+"") { s += m*1; } return s; } let arr = []; for (let i=1; i<=10000; i++) { arr.push(i); } for (let i=1; i<=10000; i++) { let s = f_sum(i); let idx = arr.indexOf(s); if (idx != -1) { arr.splice(idx, 1); } } console.log(arr.join("\n")); PHP <?php function f_sum($n) { $s = $n; while (0 < $n) { $s += $n%10; $n = floor($n/10); } return $s; } $arr = range(1, 10000); foreach (range(1, 10000) as $x) { $s = f_sum($x); $idx = array_search($s, $arr); if ($idx != "") { unset($arr[$idx]); } } echo join("\n", $arr); ?> Python3 def f_sum(n): s = n for m in str(n): s += int(m) return s arr = [i for i in range(1, 10001)] for i in range(1, 10001): s = f_sum(i) if s in arr: arr.remove(s) print("\n".join(map(str, arr))) Ruby def f_sum(n) s = n for m in n.to_s.split("") s += m.to_i end return s end arr = Array(1..10000) for i in 1..10000 s = f_sum(i) arr.delete_at(arr.index(s)) if arr.index(s) end puts arr
  • 정수 N개의 합 (15596)

    2023-02-03 21:50:00 이번 문제는 특이하게 제출 시 선택한 언어에 맞게 제출 형식을 지정해준다. 언어에 따라 해당 코드를 수정 및 추가해서 제출하면 된다. 언어가 제한되어 있어 Bash, Node.js, PHP, Ruby는 제출 불가. C long long sum(int *a, int n) { long long ans = 0; for (int i=0; i<n; i++) { ans += a[i]; } return ans; } Python3 def solve(a): return sum(a)