Errornya dmn ya?

function biggestPair (num) {

var highestInt = 0; var nextHighestInt = 0;

for (var i=0; i highestInt) { nextHighestInt = highestInt; highestInt = num[i]; } else if (num[i] > nextHighestInt) { nextHighestInt = num[i]; } else { continue; } } return highestInt + nextHighestInt; }

console.log(biggestPair(464689)); //89 console.log(biggestPair(13479)); //79

pas di run, hasilnya 0. Angka inputan ga kebaca, salahnya dmn ya?

avatar fingercuts
@fingercuts

9 Kontribusi 0 Poin

Diperbarui 5 tahun yang lalu

8 Jawaban:

coba ini gan <pre> function biggestPair (num) { var highestInt = 0; var nextHighestInt = 0;

		var output = [];
		var sNumber = num.toString();
		for (var i = 0, len = sNumber.length; i &amp;lt; len; i += 1) {
		    output.push(+sNumber.charAt(i));
		}

		for (var i=0; i&amp;lt;output.length; i++) {
			if (output[i+1] &amp;gt; highestInt) {
				nextHighestInt = output[i+1];
			}

			if (output[i] &amp;lt; nextHighestInt) {
				highestInt = output[i];
			} 

		}
		return highestInt + &#039;&#039; + nextHighestInt; // or return highestInt.toString() + nextHighestInt.toString();

	}

	console.log(biggestPair(464689)); //89
	console.log(biggestPair(13479)); //79 &lt;/pre&gt;
avatar dianarifr
@dianarifr

642 Kontribusi 316 Poin

Dipost 5 tahun yang lalu

OK, hasilnya udh keluar gan cm klo dimasukin input ini hasilnya salah.

console.log(biggestPair(641573)); // 73 console.log(biggestPair(12783456)); // 83 console.log(biggestPair(910233)); // 91 console.log(biggestPair(71856421)); // 85 console.log(biggestPair(79918293)); // 99

klo di code atas hasilnya 37, 56, 23, 16, 23.

avatar fingercuts
@fingercuts

9 Kontribusi 0 Poin

Dipost 5 tahun yang lalu

*edit, udh perbaiki lagi

<pre> function biggestPair (num) { var highestInt = 0; var nextHighestInt = 0;

		var output = [];
		var sNumber = num.toString();
		for (var i = 0, len = sNumber.length; i &amp;lt; len; i += 1) {
		    output.push(+sNumber.charAt(i));
		}

		for (var i=0; i&amp;lt;output.length; i++) {

			if (output[i] &amp;gt; output[i+1] &amp;&amp; output[i+1] &amp;gt; highestInt) {
				highestInt = output[i]; 
			} else if(output[i] &amp;lt; output[i+1] &amp;&amp; output[i] &amp;gt; highestInt) {
				highestInt = output[i];
			}
			
			if (output[i+1] &amp;gt; highestInt) {
				nextHighestInt = output[i+1];
			}


		}
		return highestInt.toString() + nextHighestInt.toString();
	} &lt;/pre&gt;

btw, next higest itu angka seteleh highest sebelumnya (tidak lihat lebih kecil atau besar) atau angka hingest selanjutnya (angka lebih besar dari highest sebelumnya)?

avatar dianarifr
@dianarifr

642 Kontribusi 316 Poin

Dipost 5 tahun yang lalu

jadi kalo pas looping ketemu angka plg gde di awal, angka itu langsung di keep jadi angka tertinggi. nah, pasangan plg tinggi setelah itu bakal jadi next highest nya. Kebetulan test casenya gda yang aneh2, jd klo ketemu angka paling besar pertama, angka keduanya selalu lbh kecil dr itu.

avatar fingercuts
@fingercuts

9 Kontribusi 0 Poin

Dipost 5 tahun yang lalu

Masih miss gan, hasilnya 67 78 90 78 79

ekspektasi hasilnya 73 83 91 85 99

avatar fingercuts
@fingercuts

9 Kontribusi 0 Poin

Dipost 5 tahun yang lalu

Jawaban Terpilih

coba ini gan

<pre> function biggestPair (num) { var highestInt = 0; var nextHighestInt = 0;

		var output = [];
		var sNumber = num.toString();
		for (var i = 0, len = sNumber.length; i &amp;lt; len; i += 1) {
		    output.push(+sNumber.charAt(i));
		}

		for (var i=0; i&amp;lt;output.length; i++) {
			if (output[i] &amp;gt;= output[i+1] &amp;&amp; output[i] &amp;gt; highestInt) {
				highestInt = output[i];
				nextHighestInt = output[i+1];
			} else if(output[i] &amp;lt; output[i+1] &amp;&amp; output[i] &amp;gt; highestInt) {
				highestInt = output[i];
				nextHighestInt = output[i+1];
			}
			


		}
		return highestInt.toString() + nextHighestInt.toString();
	} &lt;/pre&gt;
avatar dianarifr
@dianarifr

642 Kontribusi 316 Poin

Dipost 5 tahun yang lalu

Thanks gan, it works. Ane jd belajar dr codenya. Thanks a lot.

avatar fingercuts
@fingercuts

9 Kontribusi 0 Poin

Dipost 5 tahun yang lalu

walaupun sudah terjawab, saya ada alternatif solving yg lebih cepat. pakai Math.max() <a href='https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/max'>https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/max</a> yang return value terbesar dari numbers yang diberikan.

  • lihat contoh ketiga dari link diatas

<pre> function biggestPair(num) { var str = num.toString(); // convert number to string var splits = []; for(let i=0; i &lt; str.length - 1; i++) { splits.push(str[i] + str[i+1]); // push pair } return Math.max(...splits); // seperti contoh di halaman link }

console.log(biggestPair(641573)); // 73 console.log(biggestPair(12783456)); // 83 console.log(biggestPair(910233)); // 91 console.log(biggestPair(71856421)); // 85 console.log(biggestPair(79918293)); // 99 </pre>

avatar rachmatsasongko
@rachmatsasongko

410 Kontribusi 426 Poin

Dipost 5 tahun yang lalu

Login untuk ikut Jawaban