Gonzalo Gramaglia

IT Support Specialist & Full Stack Developer

Solving One Coding Challenge at a Time: My Codeforces Experience

Competitive Programming Meets Daily Discipline

https://codeforces.com/profile/ciberportero

Alongside my cybersecurity learning path, I’ve started a parallel challenge: solving Codeforces problems consistently, roughly one per day, while also taking Harvard’s CS50 Python course. The goal isn’t speed or rating (at least not yet), but building strong problem‑solving fundamentals, clean Python habits, and algorithmic thinking that will pay off long term—especially in security, scripting, and automation.

In this blog post, I’ll share how this journey is going, how I structure my practice, and what I’m learning from each step.

Practice Strategy

Rather than jumping randomly between problems, I decided on a simple and sustainable approach:

✅ Solve ~1 problem per day

✅ Work through problems in order of how many times they were solved

✅ Focus on understanding the logic, not just getting AC

✅ Solve everything in Python

This structure removes decision fatigue and keeps progress steady, even on busy days.

Learning in Parallel: CS50 Python

At the same time, I’m taking Harvard CS50’s Python course, which pairs extremely well with Codeforces practice. Concepts like:

  • loops and conditionals
  • lists and strings
  • input/output handling
  • clean code structure

show up constantly in competitive programming problems. Many Codeforces tasks feel like practical exercises reinforcing CS50 lessons, which makes both experiences stronger together.

Completed Challenges So Far

1) Watermelon (Link)

Topic: Even numbers and edge cases

A classic beginner problem. The challenge looks trivial at first, but it teaches an important lesson: edge cases matter. The watermelon must be split into two even, positive parts.

Show Solution

2) Way Too Long Words (Link)

Topic: Strings and indexing

This problem introduced basic string manipulation: abbreviating long words by keeping the first and last character and replacing the middle with a number.

Show Solution

3) Team (Link)

Topic: Conditionals and Counting

Given multiple team members’ opinions (0 or 1), the task is to count how many problems the team will actually solve based on majority agreement.

Show Solution

4) Bit++ (Link)

Topic: Simulation and String Parsing

A simple simulation problem where we need to increment or decrement a variable based on the input statement (e.g., "X++", "--X").

Show Solution

5) Next Round (Link)

Topic: Arrays and Filtering

We need to determine how many participants advance to the next round based on a score threshold.

Show Solution

6) Domino piling (Link)

Topic: Math and Geometry

Calculating the maximum number of dominoes that can fit in a rectangular board.

Show Solution

7) Beautiful Matrix (Link)

Topic: Implementation

We are given a 5x5 matrix with a single '1' and need to calculate the minimum number of moves (swaps) to bring it to the center (3,3). The solution involves finding the coordinates of the '1' and calculating the Manhattan distance to the center.

Show Solution

8) Helpful Maths (Link)

Topic: Strings and Sorting

We need to reorder a sum of numbers (1, 2, 3) so they are in non-decreasing order. I solved this using a bubble sort algorithm, thanks to the CS50 algorithms class.

Show Solution

9) Soldier and Bananas (Link)

Topic: Math

A soldier wants to buy bananas where the cost increases for each banana. We need to calculate the total cost using an arithmetic series formula (or a loop) and determine how much money he needs to borrow.

Show Solution

Why This Matters (Especially for Cybersecurity)

Even though Codeforces is "competitive programming", the skills translate directly to cybersecurity:

  • logical thinking
  • breaking problems into steps
  • reading specifications carefully
  • writing reliable scripts

Combined with Python and security studies, this daily habit is helping me become more precise, faster at reasoning, and more confident with code.

Going Forward

The plan is simple:

  • keep solving one problem per day
  • gradually increase difficulty
  • continue syncing Codeforces practice with CS50 Python concepts
  • maintain consistency over intensity

Small steps, every day.

More updates soon 🚀