240730 TIL - 무엇이 무엇이 틀렸을까

LIHA·2024년 7월 30일
0

내일배움캠프

목록 보기
7/54
post-thumbnail

SQL

아니 컬럼명도 아니고 컬럼 데이터 수정을 어떻게 해요 - DATE_FORMAT() 을 쓰자

위를 아래로 바꿔달라고 하는데 어떻게 해야 할지 감도 못 잡겠다...!! 강의를 들어도 이 내용이 나오지 않았다.
DBeaver에서 date관련 함수를 무작정 쳐보니 DATE_FORMAT이 있어 구글링하니 날짜의 형변환을 해주는 내용이 나왔다.

<여러 시행착오들>
-> 'yyyy-mm-dd' 라고 쳤더니 모든 값이 yyyy-mm-dd 라는 문자로 덮여버렸다. 이게 아닌가보다.
-> 함수 사용법을 대충보고 '%y-%m-%d' 라고 쳤더니 년도가 두자릿수만 나왔다.
-> '%yyyy-%m-%d' 라고 쳤더니 년도가 15yy(2015년 + yy)로 나왔다. 이것도 아닌가보다.
-> 사용법을 다시 봤더니 '%Y-%m-%d' 라고 쳐야했다. 드디어 성공.

select animal_id, name, date_format(datetime, '%Y-%m-%d')
from animal_ins

알고리즘

자릿수 더하기는 어려워 - .length 그거 Number에 어떻게 쓰는건데

  • .length는 배열의 길이를 반환해준다. .length()는 String의 길이를 반환해준다.
    여기서는 내가 toString()을 썼기 때문에 뭐든 특별히 상관은 없었다.
  • 3자릿수면 10^2까지, 6자리면 10^5까지 있기 때문에 i는 leng-1을 해줘야 했다.
  • i 선언문과 수행조건 부분의 내용을 뒤집어 썼다. 일반적인 for문처럼 써서 돌아가질 않았다. (i = 0이라고 씀)
  • n / ( 10 ** i)로 몫을 구하고도 계속 n으로 나누려고 하니 소숫점이 나왔다. n % (10 ** i)로 나머지를 구해서 연쇄적으로 나눠가야 했던 것.
    거짓말처럼 이 문제는 22년 항해때 도연님이 풀어주신 동전 나누기 문제 덕에 많은 도움을 받았다! :)
function solution(n)
{
    var answer = 0;
    let quote, sum = 0;
    
    let leng = n.toString().length
    
    for (i = leng - 1; i >= 0 ; i--) {
        quote = n / (10 ** i);
        n = n % (10 ** i);
        sum += Math.floor(quote);

        answer = sum;
    }
    return answer;
}

TC 3,4번만 틀리다니 이게 대체 무슨 일인가요 - 인수를 잘못 넣었어요

function solution(n) {
    var answer = 0;
    
    for (i = 3; i <= n ; i++) {
        if(n % i == 1) {
            answer = i;
            break;
        }
    }
    
    return answer;
}

이게 왜 틀려?! 하시는 분은 i의 조건을 착각한 것.
n이 3부터 시작하는 것으로 이미 주어진 거고, i를 3부터 시작하는 것으로 설정할 필요가 전혀 없음!
n을 i로 나누는 것이니 i의 조건은 1부터 시작해야 한다. (조건에서 자연수라고 줬음)

profile
갑자기 왜 춤춰?

0개의 댓글