콜라츠 추측
·
Programing/Algorithm
https://www.quantamagazine.org/mathematician-terence-tao-and-the-collatz-conjecture-20191211/ 문제설명 1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다. 1-1. 입력된 수가 짝수라면 2로 나눕니다. 1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다. 2. 결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다. 예를 들어, 입력된 수가 6이라면 6→3→10→5→16→8→4→2→1 이 되어 총 8번 만에 1이 됩니다. 위 작업을 몇 번이나 반복해야하는지 반환하는 함수, solution을 완성해 주..
하샤드의 수 (Harshad Number)
·
Programing/Algorithm
문제설명 양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요. 제한 사항 x는 1이상, 10000 이하인 정수입니다. 입출력 예 n result 설명 10 true 10의 모든 자릿수의 합은 1입니다. 10은 1로 나누어 떨어지므로 10은 하샤드 수입니다. 12 true 12의 모든 자릿수의 합은 3입니다. 12는 3으로 나누어 떨어지므로 12는 하샤드 수입니다. 11 false 11의 모든 자릿수의 합은 2입니다. 11은 2로 나누어 떨어지지 않으므로 11는 하샤드 수가 아닙니다. ..
mysql strip_tags function / html 제거 후 검색
·
Programing/MySQL
게시판의 내용 검색시 HTML 태그가 같이 검색되어, 사용자가 원하는 값을 정확하게 찾지 못하는 것을 방지 하기위해 아래와 같이 MySQL 사용자 함수를 등록해주고, CREATE FUNCTION `strip_tags`(s TEXT) RETURNS text CHARSET utf8 NO SQL BEGIN DECLARE start,end INT DEFAULT 1; LOOP SET start = LOCATE("", s, start); IF (!end) THEN SET end = start; END IF; SET s = INSERT(s, start, end - start + 1, ""); END LOOP; END 검색 시 아래와 같이 등록한 MySQL 함수를 이용한다. SELECT * FROM board WHER..
덧셈 뺄셈 동적 계산 (dynamic plus minus, Dynamic addition and subtraction)
·
Programing/Algorithm
동적인 계산이 필요할때 보통 아래와 같이 코딩한다. $sign = 'minus'; // $sign = 'plus'; $number1 = 100; $number2 = 20; if ($sign == 'minus') { echo $number1 - $number2; // 80 } else if ($sign == 'plus') { echo $number1 + $number2; // 120 } 위의 코드가 좀더 간단하게 줄이고 싶을땐 아래와 같이 사용할 수 있다. $sign = 'minus'; // $sign = 'plus'; $number1 = 100; $number2 = 20; $sign = $sign=='minus'?-1:1; echo $number1 + ($number2 * $sign); // minus:..
PHP 윤년(leap year)체크
·
Programing/PHP
PHP윤년 체크는 기본적으론 javascript 윤년체크와 같다 다만, PHP는 date 함수를 통해 좀더 쉽게 제공한다. echo date("L", strtotime("2019-01-01")); // 0 echo date("L", strtotime("2020-01-01")); // 1 echo date("L", strtotime("2021-01-01")); // 0 echo date("L", strtotime("2022-01-01")); // 0 echo date("L", strtotime("2023-01-01")); // 0 echo date("L", strtotime("2024-01-01")); // 1 if (date("L", strtotime("2020-01-01")) == true) { ech..
JavaScript 윤년(leap year) 체크
·
Programing/javascript
윤년이란? 지구가 태양 한 바퀴 도는 데에 365일 5시간 48분 46초가 걸리며, 365일이 초과되는 시간을 보정하기 위해 만들어진게 윤년이다. 윤년은 4년 마다 한번 2월 29일을 둔다. 해당 년도가 윤년인지 아닌지 확인하는 방법은 아래와 같다 연수가 4로 나누어 떨어지는 해는 윤년 100으로 나누어 떨어지는 해는 평년 400으로 나누어 떨어지는 해는 윤년 위 방법으로 만든 코드는 아래와 같다. function leapYear(year) { return ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0); } console.log(leapYear(2019)); // false console.log(leapYear(2020)); // true co..
PHP 배열 첫번째 키값 가지고 오기
·
Programing/PHP
아래 코드와 같이 key & value 형태로 되어 있는 배열에서 첫 번째 키 값을 얻는 방법입니다. $arr = array( 'A'=>array( 2=>'', 4=>'', 3=>'' ), 'B'=>array( 1=>'B', 3=>'B', 2=>'C' ), ); echo key($arr); // print 'A' echo key($arr['A']); // print '2'
PHP 정규식 비밀번호 유효성 검사
·
Programing/PHP
2025.04.22 - [Programing/PHP] - php 비밀번호 유효성 검사 으로 개선되었습니다. function passwordCheck($_str){ $pw = $_str; $num = preg_match('/[0-9]/u', $pw); $eng = preg_match('/[a-z]/u', $pw); $spe = preg_match("/[\!\@\#\$\%\^\&\*]/u",$pw); if(strlen($pw) 30) { return array(false,"비밀번호는 영문, 숫자, 특수문자를 혼합하여 최소 10자리 ~ 최대 30자리 이내로 입력해주세요."); exit; } if(preg_match("/\s/u", $pw) ..
PHP 정규식 이메일 유효성 검사
·
Programing/PHP
2025.04.22 - [Programing/PHP] - PHP 이메일 유효성 검사 로 개선되었습니다. function mailCheck($_str){ if (preg_match("/^[_\.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,6}$/i", $_str) == false) { return false; // array(false, "올바른 이메일 주소를 입력해주세요."); } else { return true; // return array(true); }}
MySQL 변수값 IN() 검색? FIND_IN_SET() 함수 이용
·
Programing/MySQL
보통 아래와 같이 한개 필드에 여러 값을 검색할 경우 IN() 함수를 이용하여 검색한다.-- sample1SELECT * FROM tbl1 WHERE tbl1_idx IN(1,2) 아래와 같이 IN()들어가는 값이 사용자가 입력한것이 아닌 다른 테이블에서의 값을 이용해서 검색 하는 것이라면?-- sample2SELECT * ,@rows_idx := (SELECT GROUP_CONCAT(tbl2_idx) FROM tbl2) -- return value: '1,2'FROM tbl1 where tbl1_idx IN(@rows_idx) 위 쿼리는 얼핏보면 정상적인 결과 값이 표현되는 것 같지만 전혀 그렇지 않다.왜일까? sample1에서 검색하는 것은 "tbl1_idx IN(1,2)" 이고, sample2에서..