본문 바로가기

Algorithm/백준(BOJ)111

[ 자바스크립트(JavaScript), Node.js ] 백준 2525 - 오븐 시계 📍 백준 2525 - 오븐 시계 백준 2525 - 오븐 시계 💡 나의 풀이 현재 시간에서 조리시간만큼 지나면 몇 시 몇 분이 되는지 구하는 문젠데 너무 어렵게 풀었다. 다른 사람의 코드를 보니까 거의 50% 짧게 써서 놀라웠다. 나는 이렇게 풀었다. 조리에 걸리는시간(cookTime)을 60으로 나눈 몫(/)은 현재시간(curHour)에 더하고, 나머지(%)는 현재분(curMin)에 더한다. while문을 사용하여 현재 시간이 24보다 작고 현재분이 60보다 작을 때 while 문을 탈출하도록 설정했다. 시간, 분 조건을 따로따로 걸어줬다. 그런데 이렇게 안 해도, 매 계산마다 hour를 비교할 필요 없이 while문에 min만 넣으면 쉽게 풀 수 있다. 즉, min이 60보다 작을 때 반복문을 탈출하게.. 2021. 8. 6.
[ 자바스크립트(JavaScript), Node.js ] 백준 1075 - 나누기 📍 백준 1075 - 나누기 백준 1075 - 나누기 💡 나의 풀이 뒤 두 자리를 가능하면 작게 만들려고 한다는 문장에서 while문을 사용하여 1씩 증가하면서 나누어 떨어지는지 확인하는 로직을 생각했다. 처음 number을 초기화 할 때 형을 string => number로 바꾸는 불 필요한 연산 때문에 코드가 괜히 길어 보여 다른방법을 곰곰이 생각해보니까 number형으로만 계산해도 됐었다. number은 다음과 같은 방법으로도 초기화 할 수 있다. let number = +((("" + n/100) | 0) + "00"); // 불 필요한 연산이 많은 코드 let number2 = parseInt(n/100) * 100 // 가독성이 좋아진 코드 // 나의 코드 const fs = require(".. 2021. 8. 4.
[ 파이썬(python) ] 백준 10709 - 기상캐스터 📍 백준 10709 - 기상캐스터 백준 10709 - 기상캐스터 ⚡️ 나의 풀이 시뮬레이션 문제였는데, 구름이 움직일때의 로직을 어떻게 짜는냐가 중요한 문제였다. 내가 작성한 코드는 다른 코드에 비해 길이도 많았고, 실행시간도 100m/s정도 차이가 났다. 다시보니까 반복문을 많이 사용해서 그런것 같다. 나의 풀이방법은 다음과 같다. 입력에 구름이 있는지 없는지를 판단하여 boolean값을 리턴한다. 구름이 한개라도 존재하는 경우 현재 sky좌표가 c이고 다음 칸을 방문하지 않았다면 cnt를 하나씩 증가시킨다. (종료조건: cnt가 W보다 커질 때) 다른사람의 풀이순서는 입력의 각 row를 기준으로 풀었는데, 생각해보면 문제에서 열끼리는 고려하지 않고 행을 기준으로만 풀기때문에 여기서 코드를 간단하게 사.. 2021. 7. 21.
[ 파이썬(python) ] 백준 10813 - 공 바꾸기 📍 백준 10813 - 공 바꾸기 백준 10813 - 공 바꾸기 ⚡️ 나의 풀이 입력으로 들어온 값을 baskets의 index를 바꿔주면 된다. 팁은 lambda 함수를 통해 입력으로 들어올 때 공통으로 원하는 값을 빼줄 수 있다. (참고) n, m = map(int, input().split()) baskets = [i for i in range(1, n+1)] for _ in range(m): a, b = map(lambda x: int(x)-1, input().split()) baskets[a], baskets[b] = baskets[b], baskets[a] print(*baskets) 2021. 7. 19.
[ 파이썬(python) ] 백준 10804 - 카드 역배치 📍 백준 10804 - 카드 역배치 백준 10804 - 카드 역배치 ⚡️ 나의 풀이 카드를 0부터 20까지 선언한다 (0을 추가한 이유는 index를 편하게 계산하기 위해서) 카드 뒤바꿀 범위를 입력 받는다. 새로운 변수에 카드를 뒤바꿀 위치만 [::-1] 선언하고 뒤바꾸지 않는 범위는 그대로 붙인다. (slicing의 특징은 end 범위는 포함하지 않는 것이다.) 새로운 변수를 이전 변수에 덮어씌운다. 반복 ~ 마지막에는 맨 처음 값을 제외하고 나머지 값만 출력한다. arr = [i for i in range(0, 21)] for _ in range(10): a, b = map(int, input().split()) b += 1 arr_ = arr[:a] + arr[a: b][::-1] + arr[b:.. 2021. 7. 18.