Pahami permasalahan sebelum memecahkan
n
Tower yang tersusun dari sejumlah m
blok. kedua pemain ini akan secara bergantian mengurangi jumlah blok di Tower dengan persyaratan jumlah blok yang baru adalah pembagi habis jumlah blok saat ini(sisa pembagian 0). Pemain akan menang jika bisa membuat pemain lain tidak bisa mengurangi ketinggian Tower.Saya latihan dengan cara coba mengerjakan soal tersebut selama 15 menit, jika masih buntu ide, saya akan coba melihat kolom diskusi. Dalam 15 menit saya dipusingkan dengan bagaimana mensimulasikan langkah setiap pemain(menggunakan looping
for
atauwhile
). Saat waktu 15 menit hampir habis, saya mencoba bereksperimen bagaimana kalau sebenarnya jawabannya tidak perlu looping
? jadi saya coba jika n * m % 2 == 0
maka player 2 yang menang selain itu player 1 yang menang.int towerBreakers(int n, int m) {
if (n * m % 2 == 0) {
return 2;
}
return 1;
}
Dan ternyata belum benar. Akhirnya saya menyerah dan coba lihat di kolom diskusi. Menurut saya ini adalah contoh kontribusi di forum diskusi yang baik. Ketimbang kita hanya membagikan kode kita, akan lebih berguna jika kita menjelaskan pendekatan logika kita ketika memecahkan masalah ini.
당신은 당신의 마음을 당신의 마음에 들게 할 것입니다. Disini ada beberapa macam kasus yang bisa memastikan player mana yang menang.
사례 1 : misalkan hanya ada 1 Tower dan jumlah bloknya lebih dari 1, karena di peraturan pasti player 1 yang akan jalan duluan, jika saya jadi player 1 saya akan langsung membuat tinggi Tower menjadi 1 blok karena ini memastikan saya akan menang (m % 1 파스타 0).
사례 2: misalkan jumlah Tower adalah bilangan genap. Ini sudah bisa dipastikan player 2 yang akan menang, karena dia akan meng-copy setiap langkah dari player 1 sampai player 1 tidak bisa jalan. Jika tower ganjil berarti itu kembali ke 케이스 1 karena tidak ada gunanya 플레이어 2 menyalin langkah 플레이어 1.
Berdasarkan 케이스 diatas 코드 penyelesaiannya kurang lebih seperti ini.
int towerBreakers(int n, int m) {
if (n % 2 == 0) {
return 2;
}
return 1;
}
Setelah saya coba 제출 ternyata ada case lain yang belum coba kita bayangkan, yaitu case dimana jumlah blok di setiap tower hanya 1. Jika case-nya adalah itu sudah pasti player 2 akan menang karena player 1 langsung tidak bisa jalan di giliran pertama.
Setelah memasukkan 케이스 terakhir, akhirnya 코드 kita melewati semua 테스트 케이스 yang ada.
int towerBreakers(int n, int m) {
if (n % 2 == 0 || m == 1) {
return 2;
}
return 1;
}
Dari sini saya belajar kalau kita sebagai 프로그래머 tidak hanya sekedar coding saja, tapi kita perlu fokus ke pemecahan masalahnya.
신용 거래:
Reference
이 문제에 관하여(Pahami permasalahan sebelum memecahkan), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/janatri1398/pahami-permasalahan-sebelum-memecahkan-2169텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)