"BOJ 2839 설탕 배달"의 두 판 사이의 차이

 
(사용자 2명의 중간 판 2개는 보이지 않습니다)
1번째 줄: 1번째 줄:
==개요==
==개요==
* {{BOJ|2839}}
{{BOJ|단계=12}}
* 나누기, 나머지 연산을 이용하는 문제
* 나누기, 나머지 연산을 이용하는 문제
* 알고리즘 분류: 수학, 구현
* 알고리즘 분류: 수학, 구현
{{BOJ 단계 헤더}}
{{BOJ 2단계}}
{{BOJ 단계 푸터}}


==Bash==
==Bash==
<source lang='bash'>
<syntaxhighlight lang='bash'>
read n
read n
small=0
small=0
32번째 줄: 28번째 줄:
fi
fi
expr $big + $small
expr $big + $small
</source>
</syntaxhighlight>


==C==
==C==
<source lang='c'>
<syntaxhighlight lang='c'>
#include<stdio.h>
#include<stdio.h>
int main() {
int main() {
55번째 줄: 51번째 줄:
     printf("%d", big + small );
     printf("%d", big + small );
}
}
</source>
</syntaxhighlight>


==C++==
==C++==
<source lang='cpp'>
<syntaxhighlight lang='cpp'>
#include <iostream>
#include <iostream>
using namespace std;
using namespace std;
79번째 줄: 75번째 줄:
     cout << big + small;
     cout << big + small;
}
}
</source>
</syntaxhighlight>


==C#==
==C#==
<source lang='csharp'>
<syntaxhighlight lang='csharp'>
using System;
using System;
public class Program {
public class Program {
103번째 줄: 99번째 줄:
     }
     }
}
}
</source>
</syntaxhighlight>


==Java==
==Java==
<source lang='Java'>
<syntaxhighlight lang='Java'>
import java.util.*;
import java.util.*;
public class Main {
public class Main {
130번째 줄: 126번째 줄:
     }
     }
}
}
</source>
</syntaxhighlight>


==node.js==
==node.js==
<source lang='javascript'>
<syntaxhighlight lang='javascript'>
var a = require('fs').readFileSync('/dev/stdin');
var a = require('fs').readFileSync('/dev/stdin');
var big = Math.floor(a/5)+1;
var big = Math.floor(a/5)+1;
144번째 줄: 140번째 줄:
}
}
if(big<0)console.log(-1);
if(big<0)console.log(-1);
</source>
</syntaxhighlight>
<source lang='javascript'>
<syntaxhighlight lang='javascript'>
var fs = require('fs');
var fs = require('fs');
var a = fs.readFileSync('/dev/stdin');
var a = fs.readFileSync('/dev/stdin');
163번째 줄: 159번째 줄:
     console.log( big + small );
     console.log( big + small );
}
}
</source>
</syntaxhighlight>


==Perl==
==Perl==
<source lang='perl'>
<syntaxhighlight lang='perl'>
use 5.010; no warnings 'experimental';
use 5.010; no warnings 'experimental';
my $n = int(<>);
my $n = int(<>);
180번째 줄: 176번째 줄:
die("-1\n") if ($big < 0 || $small < 0);
die("-1\n") if ($big < 0 || $small < 0);
say $big + $small;
say $big + $small;
</source>
</syntaxhighlight>


==PHP==
==PHP==
<source lang='php'>
<syntaxhighlight lang='php'>
<?php
<?php
fscanf(STDIN,"%d",$n);
fscanf(STDIN,"%d",$n);
191번째 줄: 187번째 줄:
}
}
echo intdiv($n,5) + [0,1,2,1,2][$n%5];
echo intdiv($n,5) + [0,1,2,1,2][$n%5];
</source>
</syntaxhighlight>
<source lang='php'>
<syntaxhighlight lang='php'>
<?php
<?php
fscanf(STDIN,"%d",$n);
fscanf(STDIN,"%d",$n);
209번째 줄: 205번째 줄:
}
}
echo $big+$small;
echo $big+$small;
</source>
</syntaxhighlight>


==Python==
==Python==
<source lang='python'>
<syntaxhighlight lang='python'>
n = int(input())
n = int(input())
big = n // 5
big = n // 5
234번째 줄: 230번째 줄:
else:
else:
     print( big + small )
     print( big + small )
</source>
</syntaxhighlight>


==Ruby==
==Ruby==
<source lang='ruby'>
<syntaxhighlight lang='ruby'>
n = gets.to_i
n = gets.to_i
if( n == 4 || n == 7 )
if( n == 4 || n == 7 )
244번째 줄: 240번째 줄:
end
end
print n/5 + [0,1,2,1,2][n%5]
print n/5 + [0,1,2,1,2][n%5]
</source>
</syntaxhighlight>

2023년 8월 28일 (월) 00:32 기준 최신판

1 개요[ | ]

BOJ 2839 설탕 배달
  • 나누기, 나머지 연산을 이용하는 문제
  • 알고리즘 분류: 수학, 구현

2 Bash[ | ]

read n
small=0
big=`expr $n / 5`
q=`expr $n % 5`

if [ $q -eq 1 ]; then
        big=`expr $big - 1`
        small=2
elif [ $q -eq 2 ]; then
        big=`expr $big - 2`
        small=4
elif [ $q -eq 3 ]; then
        small=1
elif [ $q -eq 4 ]; then
        big=`expr $big - 1`
        small=3
fi

if [ $big -lt 0 -o $small -lt 0 ]; then
        echo "-1" && exit
fi
expr $big + $small

3 C[ | ]

#include<stdio.h>
int main() {
    int a;
    scanf("%d", &a);
    int big = a / 5;
    int q = a % 5;
    int small = 0;
    switch( q ) {
        case 1: big--; small = 2; break;
        case 2: big -= 2; small = 4; break;
        case 3: small = 1; break;
        case 4: big--; small = 3; break;
    }
    if( big < 0 || small < 0 ) {
        printf("%d", -1);
        return 0;
    }
    printf("%d", big + small );
}

4 C++[ | ]

#include <iostream>
using namespace std;
int main() {
    int a;
    cin >> a;
    int big = a / 5;
    int q = a % 5;
    int small = 0;
    switch( q ) {
        case 1: big--; small = 2; break;
        case 2: big -= 2; small = 4; break;
        case 3: small = 1; break;
        case 4: big--; small = 3; break;
    }
    if( big < 0 || small < 0 ) {
        cout << -1;
        return 0;
    }
    cout << big + small;
}

5 C#[ | ]

using System;
public class Program {
    public static void Main() {
        int a = int.Parse(Console.ReadLine());
        int big = a / 5;
        int q = a % 5;
        int small = 0;
        switch( q ) {
            case 1: big--; small = 2; break;
            case 2: big -= 2; small = 4; break;
            case 3: small = 1; break;
            case 4: big--; small = 3; break;
        }
        if( big < 0 || small < 0 ) {
            Console.WriteLine( -1 );
            return;
        }
        Console.WriteLine( big + small );
    }
}

6 Java[ | ]

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        
        int big = a / 5;
        int q = a % 5;
        
        int small = 0;
        switch( q ) {
        case 1: big--; small = 2; break;
        case 2: big -= 2; small = 4; break;
        case 3: small = 1; break;
        case 4: big--; small = 3; break;
        }
        if( big < 0 || small < 0 ) {
            System.out.println( -1 );
            return;
        }
        System.out.println( big + small );
    }
}

7 node.js[ | ]

var a = require('fs').readFileSync('/dev/stdin');
var big = Math.floor(a/5)+1;
while( --big >= 0 ) {
    remain = a - big * 5;
    if( remain%3 == 0 ) {
        console.log(big + remain / 3);
        break;
    }
}
if(big<0)console.log(-1);
var fs = require('fs');
var a = fs.readFileSync('/dev/stdin');
var big = Math.floor(a / 5);
var q = a % 5;
var small = 0;
switch( q ) {
    case 1: big--; small = 2; break;
    case 2: big -= 2; small = 4; break;
    case 3: small = 1; break;
    case 4: big--; small = 3; break;
}
if( big < 0 || small < 0 ) {
    console.log( -1 );
}
else {
    console.log( big + small );
}

8 Perl[ | ]

use 5.010; no warnings 'experimental';
my $n = int(<>);
my ($small, $big, $q) = (0, $n/5, $n%5);

given ( int($q) ) {
    when ($_ eq 1) { $big--; $small = 2; }
    when ($_ eq 2) { $big -= 2; $small = 4; }
    when ($_ eq 3) { $small = 1; }
    when ($_ eq 4) { $big--; $small = 3; }
}

die("-1\n") if ($big < 0 || $small < 0);
say $big + $small;

9 PHP[ | ]

<?php
fscanf(STDIN,"%d",$n);
if( $n == 4 || $n == 7 ) {
    echo -1;
    exit;
}
echo intdiv($n,5) + [0,1,2,1,2][$n%5];
<?php
fscanf(STDIN,"%d",$n);
$big = floor( $n / 5 );
$q = $n % 5;
$small = 0;
switch( $q ) {
case 1: $big--; $small=2; break;
case 2: $big-=2; $small=4; break;
case 3: $small=1; break;
case 4: $big--; $small=3; break;
}
if($big<0 || $small<0) {
    echo -1;
    exit;
}
echo $big+$small;

10 Python[ | ]

n = int(input())
big = n // 5
q = n % 5
small = 0

if q == 1:
    big -= 1
    small = 2
elif q == 2:
    big -= 2
    small = 4
elif q == 3:
    small = 1
elif q == 4:
    big -= 1
    small = 3

if big < 0 or small < 0:
    print( -1 )
else:
    print( big + small )

11 Ruby[ | ]

n = gets.to_i
if( n == 4 || n == 7 )
    print -1
    exit
end
print n/5 + [0,1,2,1,2][n%5]
문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}