본문 바로가기

알고리즘/etc (리트코드,소프티어 ... )

[소프티어][lv.1]위험한 효도 - C , Python 풀이

반응형

 

https://softeer.ai/practice/7368

 

Softeer - 현대자동차그룹 SW인재확보플랫폼

 

softeer.ai

 

 

1. C 풀이 

#include <stdio.h>

int main(void) {
    int a, b, d;
    int result = 0;
    int walk = 0;

    // 입력 값 읽기
    scanf("%d %d %d", &a, &b, &d);

    // 터치 전 = a 동안 남우 이동, b 동안 남우 대기
    while (1) {
        // a 인 동안
        for (int i = 0; i < a; i++) {
            walk++;    // 이동거리 1씩 추가
            result++;  // 총 소요시간 1씩 추가

            // 만약 이동거리와 거리가 같아지면 for문 탈출
            if (walk == d) {
                break;
            }
        }

        // 이동거리와 거리가 같아지면 while문 탈출
        if (walk == d) {
            break;
        }

        // 총 소요시간에 b를 더해주기
        result += b;
    }

    // 다시 이동거리 0으로 리셋
    walk = 0;

    // 터치 후 : b 동안 남우 이동, a 동안 남우 대기 
    while (1) {
        // b 인 동안
        for (int i = 0; i < b; i++) {
            walk++;
            result++;
            if (walk == d) {
                break;
            }
        }

        if (walk == d) {
            break;
        }
        result += a;
    }

    printf("%d\n", result);

    return 0;
}

 

 

 

 

2. Python 풀이

 

import sys

# 입력 값 읽기
input = sys.stdin.readline

# 입력 값 a,b,d 로 분리하기
a,b,d = map(int,input().split())

result = 0    # 총 소요시간 
walk = 0      # 남우의 이동거리



# 터치 전 = a 동안 남우 이동, b 동안 남우 대기
while True:

    # a 인 동안
    for _ in range(a):
        walk += 1    # 이동거리 1씩 추가
        result+=1    # 총 소요시간 1씩 추가

        # 만약 이동거리와 거리가 같아지면 for문 탈출
        if walk ==d:
            break

    # 이동거리와 거리가 같아지면 while문 탈출
    if walk == d:
        break
    # 총 소요시간에 b를 더해주기
    result+=b

# 다시 이동거리 0으로 리셋
walk=0

# 터치 후 : b 동안 남우 이동, a 동안 남우 대기 
while True:
    # b 인 동안
    for _ in range(b):
        
        walk += 1
        result+=1
        if walk ==d:
            break
            
    if walk == d:
        break
    result+=a

print(result)
반응형