Hackerrank 30 Days of Code dan Solusinya [Update 17 Juli 2017]

Posted on Posted in Pencerdasan

hackerrank 30 days of code meme

Selama liburan 3 bulan ini saya memutuskan untuk melakukan hal yang produktif.

Sekaligus ingin menjaga (dan meningkatkan juga pastinya) kemampuan saya dalam mengerjakan soal pemrograman. Kemudian saya menemukan challange Hackerrank 30 Days of Code ini di situsnya  : 30 Days of Code. Buat temen – temen yang gabut atau ingin belajar pemrograman, bisa mencoba challange ini.

Oke, daripada berlama – lama, berikut ini adalah jawaban dari Hackerrank 30 Days of Code:

Postingan ini akan saya update setiap saat ketika saya sudah menyelesaikan tiap problem.

*Disclaimer : saya kebanyakan menggunakan bahasa Python dalam solusi saya, karena saya sedang mempelajari bahasa ini. Tapi kalau ada yang menurut saya lebih gampang dengan bahasa lain, maka akan menyesuaikan.

Day 0: Hello, World

inputString = raw_input()
print 'Hello, World.'
print inputString

Day 1: Data Types

input_int = int(raw_input())
input_dbl = float(raw_input())
input_str = raw_input()
print input_int + i
print input_dbl + d
print s + input_str

Day 2: Operators

def get_total_cost_of_meal():
# original meal price
     meal_cost = float(raw_input())
# tip percentage
    tip_percent = int(raw_input())
# tax percentage
    tax_percent = int(raw_input())

# Write your calculation code here
    tip = (meal_cost * tip_percent)/100
    tax = (meal_cost * tax_percent)/100

# cast the result of the rounding operation to an int and save it as total_cost
    total_cost = int(round(meal_cost + tip + tax))

    return str(total_cost)

# Print your result
print("The total meal cost is " + get_total_cost_of_meal() + " dollars.")

Day 3: Intro to Conditional Statements

#!/bin/python</code>

import sys

N = int(raw_input().strip())

if(N%2!=0):
    print "Weird"
else:
    if(N >= 2 and N <= 5 ): print "Not Weird" elif(N >= 6 and N <= 20):
        print "Weird"
    else:
        print "Not Weird"

Day 4: Class vs Instance

class Person:
    def __init__(self,initialAge):
        if(initialAge > -1):
            self.age = initialAge
        else:
            self.age = 0
            print("Age is not valid, setting age to 0.")
    def amIOld(self):
            if self.age < 13: print("You are young.") elif self.age >= 13 and self.age < 18:
                print("You are a teenager.")
            else:
                print("You are old.")
    def yearPasses(self):
            self.age += 1

Day 5: Loops

n = int(raw_input().strip())

for i in range(1,11):
    res = n * i
    print str(n) + " x " + str(i) + " = " + str(res)

Day 6: Let’s Review

n = int(raw_input())

for i in range(0,n):
	stc = raw_input()

	even = ""
	odd = ""

	for i in range(len(stc)):
		if i%2 == 0:
			even += stc[i]
		else:
			odd += stc[i]

	print even+" "+odd

Day 7: Arrays

Saya menggunakan C++ di soal ini, karena saya mabuk ketika mengerjakan soal ini karena belum terbiasa dengan syntax bahasa Python. Jika memungkinkan nanti akan saya update dengan versi bahasa pythonnya.

#include <bits/stdc++.h using namespace std; int main(){ int n; cin >> n;
    vector <int> list;

    for(int i=0; i<n; i++){ int in; cin>>in;
        list.push_back(in);
    }

    for(int i=list.size() - 1; i>=0; i--){
        cout<<list[i]<<" ";
    }
    cout<<endl;
}

Saya sudah menemukan solusi dengan Python, rupanya sangat sederhana dibandingkan dengan C++ 🙁

#!/bin/python

import sys

n = int(raw_input().strip())
arr = map(int,raw_input().strip().split(' '))

arr = reversed(arr)

for x in arr:
    print x,

Day 8: Dictionaries and Maps

n = int(raw_input())
rec = {} #declare an empty dictionary

for i in range(0,n):
    inp = raw_input()
    #split the input by the space
    inp = inp.split(" ")
    
    #use the name as key, phone number as value
    rec[inp[0]] = inp[1]

for i in range(0,n):
    query = raw_input()
    
    if query in rec:
        print query+"="+rec[query]
    else:
        print "Not found"

Day 9: Recursions


#!/bin/python

import sys

def factorial(n):
    if n > 1:
        return n*factorial(n-1)
    else:
        return 1

if __name__ == "__main__":
    n = int(raw_input().strip())
    result = factorial(n)
    print result

Day 10: Binary Numbers


#!/bin/python

import sys

n = int(raw_input().strip())

count = 0
maks = 0
while n > 0:
    if n%2 == 1:
        count += 1
        
        if count > maks:
            maks = count
    else:
        count = 0
    
    n /= 2
    
print maks

Day 11: 2D Arrays

Lagi – lagi saya menggunakan C++ dulu karena bingung dengan sintaks bahasa Python hehe 🙂

#include <bits/stdc++.h
using namespace std;

int main(){
   int main(){
    int matrix[6][6];
    
    for(int i=0; i<6; i++){
        for(int j=0; j<6; j++){ cin>>matrix[i][j];
        }
    }
    int max = -1000;
    int rs;
    for(int i=0; i<6; i++){
        for(int j=0; j<6; j++){
            if(i+2<6 && j+2<6){ rs = matrix[i][j] + matrix[i][j+1] + matrix[i][j+2] + matrix[i+1][j+1] + matrix[i+2][j] + matrix[i+2][j+1] + matrix[i+2][j+2]; if(rs > max) max = rs;
            }
        }
    }
    
    cout<<max<<endl;
}

One thought on “Hackerrank 30 Days of Code dan Solusinya [Update 17 Juli 2017]

Leave a Reply

Your email address will not be published. Required fields are marked *