본문 바로가기

백준

2178 미로 탐색과 좋은 코드 좋은 코드란 무엇일까?아직 초보 개발자 지망생인 나는 이에 대한 확실한 대답을 갖고 있지는 않지만, 몇가지 기준은 갖고 있다.오늘 소개할 기준은 재사용성이다. 예시를 들며 설명해보자. 이 코드는 2178 미로 탐색에 사용되는 상하좌우에 BFS를 돌리는 코드다.이 코드는 if문이 너무 많고, 변수 이름도 길다. 한번에 눈에 들어오지 않는다.이 코드의 문제점으로, 똑같은 기능을 하는 코드가 여러번 쓰여져 있고, 같은 변수가 여러번 길게 불러져 온다. 이런 코드는 더 깔끔하고 읽기 쉽게 고칠 수 있는 방법이 존재한다. 아래 코드는 2가지 방법을 사용하여 고친 코드이다.일단 모든 코드에 +1, -1 더해주던 값을 dx, dy라는 배열로 저장해준 다음, for문을 이용하여 if문을 여러개 만들 필요 없이 처리하게.. 더보기
백준 1004 어린 왕자 c++ 풀이 이 문제에서 우리가 구현 해야될것은 1 입력 2 알고리즘 3 출력 이다. 이때 입력은 T를 만큼의 횟수 만큼 출발점과 도착점 x,y를 받고 N만큼의 횟수 만큼 중점 x,y와 반지름r을 받는다. 를 구현하면 된다. 출력은 매우 간단하기 때문에 생략한다. 그렇다면 여기서 알고리즘은 어떻게 구현할까? 이것은 매우 수학적으로 접근 해야 하는 문제로, 수학에서 원의 방정식을 알고 있으면 푸는데 매우 도움이 된다. 우리가 풀어야 하는 문제는 '선이 원을 몇번 지나는지 구해라'이다. 선이 원을 몇번 지나는지 어떻게 아는가? 나는 원의 반지름과 점과 원점의 거리를 비교하여 구했다. 만약 원 내부에 출발점과 도착점을 둘다 포함할 정도로 크다면 이런 구조를 예상 할 수 있다. 이는 선을 잇는데 전혀 거치지 않는다. 만약 .. 더보기
백준 2309 일곱 난쟁이 C++ 풀이 문제는 다음과 같다. 이 문제가 원하는게 어떤 코드인지를 분석하자면 문제를 잘 읽어 보아야 한다. 문제를 전부 읽고 이해를 하면, 우리는 구해야 하는 것들을 알 수 있다. 9개의 int형 키 값들을 입력 받는다. 이중 합이 100인 7개의 키 값을 구한다. 이 키 값들만 출력한다. 그렇다면 이 문제에서 풀어야 알고리즘은 이것이다. 이중 합이 100인 7개의 키 값을 구한다. 우리는 9개의 값중 합이 100을 만족하는 7개의 값을 어떻게 구할 수 있을까? 나는 수학에서 배운 순열과 조합을 이용하였다. 좀 더 간단한 예시를 들어서 설명해보자 여러분은 1, 2, 3이라는 3개의 값을 받고, 이 값중 총 합이 4인 2개의 값을 구하고 싶다. 이러한 경우 나는 모든 경우의 수를 만든후 합을 비교하여 답을 구할 것.. 더보기