개발지식 먹는 하마 님의 블로그

[내일배움캠프 14일차] _ 수학적으로 더 간편하게 풀기, Git 커밋 컨벤션 본문

내일배움캠프 (CS25)

[내일배움캠프 14일차] _ 수학적으로 더 간편하게 풀기, Git 커밋 컨벤션

devhippo 2025. 3. 7. 21:31

문자열을 응용하는 문제를 하나 풀이했다.
GUI에서 구현하는 계산기와 이번 문제풀이에 유용하게 사용한 Pattern과 Matcher에 대해서 정리했다.
마지막으로 계산기 도전 기능 구현을 완료했고 마지막으로 한 번더 검토하는 과정에 있다.


📚 학습 내용 정리

  • Git 커밋 컨벤션

다음 프로젝트 구현에 들어가기 앞서 이전 프로젝트에서 챙기지 못했던 커밋 컨벤션에 대해 알아보았다.

https://devhippo.tistory.com/83

 

Git 커밋 컨벤션을 지키면서 Commit하기!

계산기 프로젝트를 개발 평가 기준에 "커밋 컨벤션을 지킨 커밋을 10회 이상 시행"이라는 항목이 있었다.GUI 구현에 눈이 멀어 이 부분을 놓쳤다.따라서, 다음 프로젝트 개발에 앞서 이 부분을 간

devhippo.tistory.com

 

  • 코드 카타, 프로그래머스 다른 사람들은 어떻게 풀었을까?

코드 카타를 풀면서 내 코드가 조금 복잡하다고 느끼면서 더 효율적인 풀이는 뭐가 있을까 궁금해졌다.

수학을 이용해서 머리를 탁 칠 정도로 간단한 풀이들이 많았다.
알고 있으면 매우 유용할 것 같아 일부 풀이를 공부했다.

가장 복잡했던 문제만 별도의 글에 정리해보았다.

https://devhippo.tistory.com/84

 

프로그래머스 lv2 - 멀쩡한 사각형

✏️ 문제 풀이처음 이 문제를 봤을 때, 대각선에 대한 직선의 방정식을 만들고 격자의 좌표를 대입하여 교차 여부를 확인하는 방법을 생각해보았다.그러나 쉽게 구현할 엄두를 내지 못했다.주

devhippo.tistory.com

솔직히 이 문제 풀면서 힌트에 대각선의 특성을 한 번 생각해보세요를 남겨놨으면 어땠을까 하는 생각이 들었다...


 학습하며 겪었던 문제점

✏️ 소수점 내림에 대한 발상 자체의 어려움

제곱근이 양의 정수인지 판별하는 문제를 풀이할 때,
나는 제곱근이 소수인지 아닌지를 나머지가 0인지 아닌지를 확인하여 판별하려고 했다.
그런데 이는 그럴 필요없이 그냥 계산된 제곱근을 소수점 내림한 것을 이용하면 훨씬 간단하게 풀 수 있는 문제였다.

if (sqrt(n) == floor(sqrt(n)))


소수점 내림 값을 이용한다는 발상자체를 떠올리는게 아직 익숙하지 않은 것을 느꼈다.
이를 좀 더 연습해야겠다고 느꼈다.

✏️ 두 정수 사이의 합을 반복문으로 푸는 멍청한 짓을(?) 제가 했습니다 여러분

두 정수 사이의 합을 나는 당연하게 반복문으로 풀었다.
프로그래머스의 다른 사람들의 코드를 보았다.

비트연산자를 사용해 푼 사람도 있었다.
나는 컴퓨터가 아니기 때문에 비트연산자를 사용하기 위해 머리를 쓰는 시간을 포기했다...
(이걸 이해하려면... 만만치 않은 시간이...)

또 어떤 사람들은 이걸 반복문도 없이 단 한 줄로 풀었다.

그 원리는 바로 등차수열 합 공식을 이용하는 것이었다.

long long solution(int a, int b) {
    return (long long)(a + b) * (abs(a - b) + 1) / 2;
}

등차수열 합 공식 : S(수열의 합) = n(항의 개수)/2 * (첫번째 항 + 마지막 항)

마지막으로 한 가지...

✏️ C++에서 sort함수를 사용해 문자열로 저장한 숫자도 정렬이 가능하다!!!


⭐ 세상에 나보다 뛰어난 사람은 너무나 많다. 항상 겸손하게 살자.

백준과 달리 프로그래머스에서는 다른 사람이 문제를 푼 코드를 더 쉽게 확인할 수 있어서 유익하다고 느꼈다.
코드 카타를 미는 속도도 중요하지만 이런 점을 배워가는 것이 더 중요하기 때문에
앞으로 무조건 문제를 푼 후, 다음 문제로 넘어가기 전 다른 사람의 풀이를 꼭 확인해야겠다고 다짐했다.