TIL(Today I Learned) 41

[Java/코딩테스트] 없는 숫자 더하기

안녕하세요!오늘은 제가 의도한 대로 문제를 풀고싶어서 고민을 많이했던 코딩테스트를 가지고 왔습니다.   시도 1.없는 숫자를 어떻게 골라내지 생각하다가 노가다로 ||(또는) 연산자를 사용해서 없는 숫자를 고르고 싶었으나,,그럼 없는 숫자들은 어떻게 더하지..? 라고 생각이 들고는,,, 답이 안나와서 다른 시도를 했습니다. 시도 2.이중 for문을 사용하여 "numbers 배열에 들어있는 값( i )" 과 j를 선언하여 비교해서 없는 숫자를 더하고 싶었습니다그러나 비교해서 없는 숫자를 다 더하다보니깐 있는 숫자까지 더해버리는 결과를 초래하게 되더군요 사실, 왜이렇게 복잡하게 풀지??라는 생각이 들 수 있지만(다른분들 풀이 보니깐 0~9까지 더한다음에 numbers의 합을 빼줘서 간단하게 풀더라구요) 저는 ..

[MYSQL] DATETIME에서 DATE로 형 변환 (DATE_FORMAT)

안녕하세요!오늘은 DATE_FORMAT에 대해 알아보려고 합니다.   DATE_FORMATDATE 또는 DATETIME 형식의 값을 지정된 형식의 문자열로 변환하기 위해 사용합니다.(=사용자가 원하는 형태로 변경하는 것)사용 방법(대소문자 사용 주의!)DATE_FORMAT(datetime컬럼명, 포맷할 형태)포맷 형태 정리( ' - '로 구분 )포맷문자설명(예시)포맷문자설명(예시)포맷문자설명(예시)포맷문자설명(예시)%Y4자리 년도(2024) %y 2자리 년도(24)     %M월 영어 풀네임(August) %b 월 짧은 영어(Jan, Aug, ...)  %m 월 (01~12)  %c월 (1~12)(앞에 0이 없어진 버전!) %D일 영어(1st, 6th, 29th..)%d일 (01~31)%e일 (1~31)..

[Java/코딩테스트] 음양 더하기 ( + 지역변수에 대하여)

안녕하세요!오늘은 생각하면 되게 간단한 코딩테스트를 들고왔습니다..!   처음에는 true면 그냥 더하고, false면 음수로 봐꿔줘서 더하면 되겠구나? 라고 간단하게 생각했는데음수로 봐꿔주는 메서드가 있는건가? 문자열로 "-" 더해줄까?? 라고 생각을 깊게 하다보니 제대로 못풀고 있었습니다. 그러던 찰나에 "-1"을 곱하면 당연히 "음수"가 된다는 생각이 떠올랐습니다. 그리고 또 다른 난관에 부딪쳤는데,,그럼 어떻게 합쳐서 더하지..? 생각했습니다.(코딩을 막 배운 저라, 가끔씩 생각이 이상한쪽으로 깊게 생각하게 되더군요,,ㅎㅎ)  많은 생각과 고민을 한 만큼 오늘 코딩테스트는 한 번의 시도 끝에 통과했습니다!! 뭔가 생각한대로 한번에 통과하니깐 기분이 좋더라구요ㅎㅎ이제 저 코드를 더 간단하게 할 방법..

[MySQL/코딩테스트] NULL 처리하기(IFNULL, CASE, COALESCE 사용)

안녕하세요!오늘은 SQL 코딩테스트 문제를 들고왔습니다.  일단 저는 이 문제를 보고,  "replace"를 활용하여 문제를 풀으면 되겠는데?? 생각했습니다ㅎㅎ  당연히 통과할 줄 알았던 테스트였지만,,결과가 이상하게 나오더라구요..!그래서 replace에 대해 다시 찾아 본 결과,replace는 바꿀 값이 아무것도 없으면 "Null"을 치환한다고 합니다.생각해보니깐 문자열을 바꿔주는 함수인데, 애초에 아무것도 없는(null) 값을 바꾸려고 시도했던 부분이 스스로 너무 부끄러웠습니다ㅎㅎ  이제! Null 값을 치환해주는 방법에 대해 알아보겠습니다. 1.  IFNULL 함수컬럼의 데이터가 null인 경우 대체 값으로 치환할 수 있습니다.(null값을 치환하는 가장 간단한 방법!!)사용 방법IFNULL(컬럼..

[Java/코딩테스트] 서울에서 김서방 찾기

안녕하세요!오늘도 코딩테스트 문제를 가져왔습니다.   문제를 풀려고 생각해 보다 보니 answer라는 문자열 변수는 필요가 없을 것같아서 지운 상태에서 시도를 해보았다. 왜 index값이 0이 나왔지?라는 의문이 들었고,내가 짠 코드를 자세히 살펴보니 문자열을 비교할 때는 "=="연산자를 사용하면 안되는데 실수했다.왜냐면, "=="연산자는 "주소값"을 비교할 때 사용하기 때문이다. cf )      == 연산자객체의 주소를 비교하여 일치하는 확인할 때 사용        equals() 메서드객체의 내용을 비교하여 같은지 확인할 때 사용  오늘의 요약내용을 비교 하고 싶다 → equals()주소값을 비교 하고 싶다 → 비교 연산자

[Java/코딩테스트] 콜라츠 추측

안녕하세요!오늘도 코딩테스트 문제를 가져왔습니다.   일단, 마음가는대로 코드를 작성하고는 테스트 했습니다.ㅎㅎ 그랬더니, 테스트3이 통과되지 못하였고문제를 다시 보니 놓친 부분이 있었습니다.실행한 결괏값 488이 걸려서 곰곰히 생각해보니 지금 int정수형이지만입출력 예시 3번과 같이 큰 수들이 while문 돌면서 int의 최댓값을 넘어버릴것 같다는 생각이 들어long으로 형변환을 시켜주었습니다. 그리고, int answer가 선언되어있는데 굳이 count를 선언해서 복잡했던 코드들도 수정하였습니다.   오늘의 요약굳이 선언하여 코드를 복잡하게 만드는 코드가 없는지 한번 더 생각해 보자.

[Java/코딩테스트] 하샤드 수 판별

안녕하세요!오늘 풀어본 코딩테스트에 대해 다뤄보도록 하겠습니다.  일단, 이 문제를 풀기 전에 알아야 될 수학적 용어를 정리하고 풀어야 합니다.(입출력 예시 보고도 충분히 풀이가 가능하긴 하지만, 궁금하니깐..!!) 하샤드 수주어진 진법에서 그 수의 각 자릿수 숫자의 합으로 나누어 떨어지는 자연수를 말한다.예시 : 12는 각 자릿수 숫자의 합이 1+2=3이고, 12가 3으로 나누어떨어지므로 12는 10진법에서 하샤드 수다. 그러나 16은 1+6=7이고, 16이 7로 나누어떨어지지 않으므로 16은 10진법에서 하샤드 수가 아니다. (출처 : 나무위키)  문제 푼 순서1.  10으로 나누어 나온 숫자들을 더하는 식에 집중하다보니, if문에서 실수를 하였다.2. if문을 고쳤더니, 왜 다 통과가 안돼지? 생각..

[Java/코딩테스트] 정수 내림차순으로 배치하기

안녕하세요!오늘은 되게 간단해보이는데 생각보다 간단하지 않았던 코딩테스트를 정리해보려고 합니다.   이 문제를 보자마자 문자열 →  배열에 넣고 → 배열을 돌려가면서 값 비교? 할까??문자열 → substring으로 하나씩 값 비교? 어떻게 풀어야하지? 위에처럼 생각하다가 구글링의 도움을 받고 밑에 방법처럼 풀어보았습니다.도움이 많이 되서 정리해봅니다. 1. long 타입을 String 타입으로 변환해줍니다. :  118372 → "118372"  2. String타입으로 변환된 값을 split메서드를 활용하여 문자열을 잘라서 배열에 넣어줍니다. : "118372" → ["1", "1", "8", "3", "7", "2"]    cf ) split() 메서드문자열을 매개변수(파라미터)로 받아서 해당 매개..

[Java] 정수형 → 문자열 / 문자열 → 정수형 변환 정리

안녕하세요!오늘은 제가 개인적으로 너무 헷갈렸던 부분에 대해 정리해 보도록 하겠습니다. 정수형(int, long형)  →  문자열방법1. Integer.toString(int값) & Long.toString(long값) 문자열로 바꾸고자 하는 값을 위에 나와있는 이미지처럼 형변환 시켜주면 됩니다!! 방법2. String.valueOf(int값) & String.valueOf(long값)문자열로 바꾸고자 하는 값을 위에 나와있는 이미지처럼 형변환 시켜주면 됩니다!! 방법3. 정수형값 + ""  ( = 문자열을 더해서 문자열로 바꾸는 방법)문자열은 다른 형과 더하면 "문자열"로만 출력되는 점을 이용했습니다. 문자열  → 정수형(int, long형)방법1. Integer.parseInt(String값) & L..

[Java/코딩테스트] 약수의 합

안녕하세요!오늘 푼 코딩테스트에 대해 작성해보도록 하겠습니다.    일단 이 문제를 풀려면,약수에 대해 알아야되는데요. 약수란어떤 수를 나누어 떨어지게 하는 수(= 나머지가 없다는 것!!) 나머지가 없다는 것에 바로 if 조건문에 " %" 연산자를 사용하고for문으로 약수를 모두 더하면 되겠구나 생각해서 풀었습니다.  통과한 창 보면 괜스레 기분이 좋네요ㅎㅎ   오늘의 요약코딩테스트는 생각보다 단순, 간단하게 생각해야 될 때도 있다.