leetcode , 백준

[Go] 2869 달팽이는 올라가고 싶다

_HelloWorld_ 2025. 1. 13. 16:27

Description


Code

package main

import (
	"strings"
	"strconv"
	"bufio"
	"os"
)

var (
	sc = bufio.NewScanner(os.Stdin)
	wr = bufio.NewWriter(os.Stdout)
)

func main() {
	defer wr.Flush() 

	var A, B, V int
	if sc.Scan() {
		temp := strings.Fields(sc.Text())
		A, _ = strconv.Atoi(temp[0])
		B, _ = strconv.Atoi(temp[1])
		V, _ = strconv.Atoi(temp[2])
	}

	// 높이가 V 미터 
	// 낮에는 A미터 올라감
	// 자는 동안 B미터 미끄러짐

	if (V - B) % (A - B) == 0 {
		wr.WriteString(strconv.Itoa((V - B) / (A - B)))
	} else {
		wr.WriteString(strconv.Itoa((V - B) / (A - B) + 1))
	}
}

 

  • 입력 처리
    • 달팽이가 낮에 올라가는 거리 A, 밤에 미끄러지는 거리 B, 목표 높이 V를 입력받습니다.
    • 입력받은 값을 정수로 변환하여 계산에 활용합니다.
  • 핵심 로직
    • 목표 높이 V에 도달하기 전, 마지막 날 밤에는 미끄러지지 않습니다. 따라서 V - B를 기준으로 계산을 시작합니다.
    • 매일 순수하게 올라가는 거리는 A - B이므로, (V - B) / (A - B)로 며칠이 필요한지 계산합니다.
    • 나누어떨어지지 않는 경우, 하루가 더 필요하므로 +1을 추가합니다.
  • 조건 처리
    • (V - B) % (A - B) == 0일 경우, 추가적인 하루가 필요하지 않습니다.
    • 그렇지 않다면, (V - B) / (A - B) + 1로 계산하여 출력합니다.

 

'leetcode , 백준' 카테고리의 다른 글

[Go] 2346 풍선 터뜨리기  (0) 2025.01.08
[Go] 28279 덱 2  (0) 2025.01.07
[Go] 11866 요세푸스 문제 0  (0) 2025.01.03
[Go] 18258 큐 2  (0) 2025.01.03
[Go] 4949 균형잡힌 세상  (0) 2025.01.03