<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Jedric Tuquero</title>
    <description>The latest articles on DEV Community by Jedric Tuquero (@jedct).</description>
    <link>https://dev.to/jedct</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4042118%2F05dd2074-c549-40c5-9688-1d80c065601c.png</url>
      <title>DEV Community: Jedric Tuquero</title>
      <link>https://dev.to/jedct</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jedct"/>
    <language>en</language>
    <item>
      <title>Iskor Devlog #1 - Learning a Little Bit of Everything</title>
      <dc:creator>Jedric Tuquero</dc:creator>
      <pubDate>Sun, 23 Aug 2026 08:04:18 +0000</pubDate>
      <link>https://dev.to/jedct/iskor-devlog-1-learning-a-little-bit-of-everything-243f</link>
      <guid>https://dev.to/jedct/iskor-devlog-1-learning-a-little-bit-of-everything-243f</guid>
      <description>&lt;p&gt;Welcome to the first (and hopefully not the last) devlog of Iskor! I started this blog mainly to prevent the degradation of my writing skills caused by excessive LLM use. The sharing of my app's progression is just a nice byproduct of it xD.&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Like virtually all applications, Iskor started as an idea. I observed tens of thousands of students apply for both the DOST-SEI Undergraduate and JLSS Exam, and they are even willing to pay for review centers. My market research revealed that only a couple of exam/review SaaS are dedicated to these types of exam. Hence, this signaled a large and underserved market with a lot of potential. So as a DOST Scholar myself and someone who knew full-stack development, I took it upon myself to build Iskor. &lt;/p&gt;

&lt;p&gt;I started this project at the beginning of August, and plan to deploy it as a full-fledged product on the first week of November with beta-testing and question-bank filling at least a month before the undergraduate exam, scheduled Nov. 14-15. 2 months.&lt;/p&gt;

&lt;p&gt;In the past few weeks, I focused on implementing features on the components that I am familiar with.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stuff I Know
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Frontend
&lt;/h3&gt;

&lt;p&gt;I decided to go with &lt;strong&gt;Next.js&lt;/strong&gt; for my frontend because it pre-renders your website, allowing webcrawlers to access my site and do SEO magic. In addition, it also has essential features such as file-based routing, server-side rendering (SSR), and is also relatively easy to understand thanks to my past React experience.&lt;/p&gt;

&lt;p&gt;I also utilized TypeScript since it is essentially a strongly-typed JavaScript. It checks types and detects errors at compile time, adds more complex data types such as interfaces, and works well with Next.js. &lt;/p&gt;

&lt;p&gt;As for the website itself, I have created the landing page, a resource page to view all covered topics with externals study site recommendations, the sign-in/sign-up page, and the exam page itself which emulates a real test paper. It supports SVGs, excerpts, images, LaTeX equations, and shared-media questions. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0sh28ehqmfgztxpvps07.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0sh28ehqmfgztxpvps07.png" alt="Landing page of Iskor" width="799" height="343"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Finally, I have also dabbled on AI-assisted coding, where I studied proper prompt engineering and utilized Antigravity CLI to create reusable components. I make sure to review its proposed changes before approving them, since I don't want this app to be a black box of vibe-coded slop. &lt;/p&gt;

&lt;p&gt;Now, since Next.js has built-in API routes that essentially serve as the backend, it would be obvious to use that, right? &lt;/p&gt;

&lt;h3&gt;
  
  
  Backend
&lt;/h3&gt;

&lt;p&gt;I have no problem diving into complex things, as long as it helps me move forward with my goals. One of them is someday working in FinTech. In order for me to land a dev role in that industry, I must be able to utilize the technologies they use.&lt;/p&gt;

&lt;p&gt;Enter Spring Boot. Spring Boot is Java's modern framework for building enterprise web apps. It massively reduces the initial boilerplate code Java has been associated with using auto-configuration and is, at its core, a batteries-included framework.&lt;/p&gt;

&lt;p&gt;Aside from the listed pros, Spring Boot has also benefited my development process in more ways than one. For instance, its embedded Tomcat servers allowed me to run the application in a .jar file, making it easy to build and containerize. Moreover, its strict enforcement of SOLID allowed me to ingrain these development principles into my thinking. Here is how:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Single-Responsibility Principle (S)&lt;/strong&gt; - each class is a layer that handles a different function (controller classes for endpoints, service classes for business logic etc.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Open-Closed Principle (O)&lt;/strong&gt; - each function can be added a feature through annotations&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Liskov Substitution Principle (L)&lt;/strong&gt; - not implemented that much yet, but the backend does not use a deep inheritance hierarchy that causes LSP problems.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Interface Segregation Principle (I)&lt;/strong&gt; - functions to be used in the service layer are the ones explicitly defined in the repository layer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dependency Inversion Principle (D)&lt;/strong&gt; - utilizes constructor injection to create the dependency first before providing them to the services and controllers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Even after realizing how verbose still this framework is, I do not regret choosing Spring Boot as this app's backend. Next layer: the database.&lt;/p&gt;

&lt;h3&gt;
  
  
  Database
&lt;/h3&gt;

&lt;p&gt;Fortunately, this is one of the components of the app where I do not need to learn anything particularly new. I chose to use PostgreSQL because of its high data integrity (ACID compliance) and its extensive support of both relational and semi-structured data like JSON, which would become essential for future features. &lt;/p&gt;

&lt;p&gt;I have created the schema for the website, applying normalization and indexes to reduce data redundancy and improve read speed since the app would be read-heavy.&lt;/p&gt;

&lt;p&gt;For hosting, I opted to use Supabase for prototyping and initial development. Its wide range of tools has made making database edits seamless. Although helpful at the start, Supabase does get expensive as I start to hit the free plan limits. Hence, I plan on migrating to Amazon RDS once this app is complete in order to support more users and get a glimpse on how RDBMS works on production.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting my Feet Wet
&lt;/h2&gt;

&lt;p&gt;Aside from those three foundational layers, I have also started getting my feet wet on the other important parts of software engineering.&lt;/p&gt;

&lt;h3&gt;
  
  
  Authentication/Authorization
&lt;/h3&gt;

&lt;p&gt;Security is one of the most essential features of an application, especially in this new age of unsecure, vibe-coded app fever. While Spring Security exists, I ultimately decided on using Clerk to handle user authentication/authorization because I believe it is much better for a reputable third-party to handle real user data instead of an amateur rolling his own auth.&lt;/p&gt;

&lt;p&gt;With that being said, I have implemented a functional sign-in and sign-up feature using Clerk's built-in components. However, I have yet to secure my API endpoints using JWT and implement other security features such as RBAC and rate limiting.&lt;/p&gt;

&lt;h3&gt;
  
  
  DevOps and CI/CD
&lt;/h3&gt;

&lt;p&gt;For the past few months, I have been learning Docker on the side in order to make sure that my applications run on any server. I have learned how to build an image from a Dockerfile, spin up containers using docker compose, and learned the best practices on creating and managing these containers.&lt;/p&gt;

&lt;p&gt;This week, I also learned how to use GitHub Actions to setup a workflow that automatically builds the backend image and upload it to DockerHub. Although, I plan on refactoring the pipeline to build the .jar file on the runner itself before inserting it into the image to save build time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Plans for Next Week&lt;/strong&gt;&lt;br&gt;
I probably would be a lot more time-constrained next week due to classes starting again, so I decided to put my focus on one thing at a time. Hence, I plan on implementing RBAC and securing my API endpoints first using Clerk's JWT and Spring security, along with finalizing the infrastructure Iskor would utilize in production.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>A 30-Day Sprint to Build 2 Full-Stack Apps for UP Faculty</title>
      <dc:creator>Jedric Tuquero</dc:creator>
      <pubDate>Wed, 29 Jul 2026 13:47:31 +0000</pubDate>
      <link>https://dev.to/jedct/a-30-day-sprint-to-build-2-full-stack-apps-for-up-faculty-my-story-3llc</link>
      <guid>https://dev.to/jedct/a-30-day-sprint-to-build-2-full-stack-apps-for-up-faculty-my-story-3llc</guid>
      <description>&lt;p&gt;Building a full-stack web application is one thing. Building two apps...for real users...with frameworks you have never used before...in less than a month...is another story.&lt;/p&gt;

&lt;p&gt;Last summer break, our university (UP Baguio) offered CMSC 198: Practicum, a course that requires us to complete an internship and apply computer science theories we have learned so far to real-world applications. Me and other third year students were put together into a team and were given a task: build two full-stack web apps to be utilized by 30+ faculty members, one to manage class sections and another to track students' taken/required subjects.&lt;/p&gt;

&lt;p&gt;During the initial planning phase, we were given the opportunity to decide the tech stack that we would be using. After careful consideration, we chose the following: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; React. Chosen over NextJS because the app would only be used within the school system, so SEO is irrelevant.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; FastAPI. Selected for its simplicity, familiarity with Python among the developers, and its automatic API documentation: essential for collaboration and rapid development.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Database:&lt;/strong&gt; PostgreSQL via Supabase. Considering that the app usage would only peak during enrollment times, the generous free tier of Supabase would be enough.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hosting:&lt;/strong&gt; Render. Same as the reason above. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In the end, it was completely worth it. The department was genuinely satisfied with the apps, and we walked away with a 1.00 for the course. &lt;/p&gt;

&lt;p&gt;Looking back, mastering the fundamentals all those years turned out to be the biggest game changer because it made learning an entirely new stack feel way less intimidating. &lt;/p&gt;

</description>
      <category>fastapi</category>
      <category>python</category>
      <category>react</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Top K frequent elements - My Solution</title>
      <dc:creator>Jedric Tuquero</dc:creator>
      <pubDate>Wed, 22 Jul 2026 15:09:00 +0000</pubDate>
      <link>https://dev.to/jedct/top-k-frequent-elements-my-solution-19k2</link>
      <guid>https://dev.to/jedct/top-k-frequent-elements-my-solution-19k2</guid>
      <description>&lt;p&gt;The &lt;strong&gt;Top K frequent elements&lt;/strong&gt; is one of the many problems in Leetcode that involve hashing, and is also one of the first Medium challenge found in Neetcode, specifically when you start at the Arrays &amp;amp; Hashing section in the roadmap.&lt;/p&gt;

&lt;p&gt;It states that given an array of integers and an integer &lt;code&gt;k&lt;/code&gt;, create a function that returns the &lt;code&gt;k&lt;/code&gt; most frequent integers. &lt;/p&gt;

&lt;p&gt;It sounds easy enough, but the Dunning-Kruger effect got me once again. So, I opened the Hints section. It told me that the ideal solution must be &lt;code&gt;O(n)&lt;/code&gt;, and an algorithm that involves sorting based on frequency is applied to it. Google then led me to the Bucket Sort Algorithm.&lt;/p&gt;

&lt;p&gt;From my understanding, the Bucket Sort Algorithm is well, an algorithm that is used to partition an input array into smaller arrays, assigning an element into an element array (or in this case, buckets).&lt;/p&gt;

&lt;p&gt;After lots of syntax error and wrong outputs, here is what I came up with.&lt;/p&gt;

&lt;p&gt;First, I initialized the needed data structures, namely the &lt;code&gt;map&lt;/code&gt; dictionary, the &lt;code&gt;bucket&lt;/code&gt; array which is just an array of arrays, and the &lt;code&gt;result&lt;/code&gt; array.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;topKFrequent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;nums&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
    &lt;span class="nb"&gt;map&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nb"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;
    &lt;span class="n"&gt;bucket&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nb"&gt;list&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;list&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
    &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nb"&gt;list&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then, I used a &lt;code&gt;for&lt;/code&gt; loop to populate the empty array into well, more empty arrays, specifically &lt;code&gt;len(nums) + 1&lt;/code&gt; of them in order to handle the edge case of the array going out of bounds when the frequency of an element is equal to the length of the array.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;#Initialize bucket
&lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;nums&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;bucket&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;([])&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Next, in order to count the frequency of each integer,I utilized the &lt;code&gt;map&lt;/code&gt; hashmap, where the integer serves as the key and its frequency as the value.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;#Map the numbers to their frequency
&lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;num&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;nums&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;num&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nb"&gt;map&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nb"&gt;map&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;num&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;map&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;num&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
    &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nb"&gt;map&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;num&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After that, this is where the bucket sort algorithm is implemented. The frequency of the integer serves as the index to which bucket will the integer be appended. The more frequent an integer appears, the higher the index it will be assigned to.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;#Use frequency as index when appending to an inner array
&lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;num&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;freq&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nb"&gt;map&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;items&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="n"&gt;bucket&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;freq&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;num&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Finally, I stored the most frequent integers into the result array, checking until a length of &lt;code&gt;k&lt;/code&gt; is reached. Since the most frequent integers were indexed at the near-ends of the array, we must iterate backwards in order to access them first.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;#Iterate backwards, insert numbers to result array until k length is reached
&lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;arr&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;reversed&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;bucket&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;arr&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="p"&gt;[]:&lt;/span&gt;
        &lt;span class="k"&gt;continue&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;nums&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;nums&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;
&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And that's it. Overall, it took me around 30 minutes to solve the problem. I'm also still trying to study the behavior of Python data structures since I come from Java, so syntax errors at the very first press of &lt;code&gt;Run&lt;/code&gt; will be inevitable xD.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
