안녕하세요? 오늘은 백준 알고리즘 사이트에 있는 문제 중 하나인 13235번 팰린드롬을 풀어보겠습니다. 문제 번호가 13231 이었으면 더 의미가 있었을 텐데 아쉽습니다... 하하... 농담은 이정도로 하고 본격적으로 문제를 풀어보겠습니다. 팰린드롬이란 문제에서 설명하듯이 뒤로 읽으나 앞으로 읽으나 똑같은 단어를 말하는데요, 이는 Mirror alphabet과 혼동할 수 있지만 정확히는 다른 용어입니다. 위키백과에서는 이렇게 설명하고 있네요 "회문(回文) 또는 팰린드롬(palindrome)은 거꾸로 읽어도 제대로 읽는 것과 같은 문장이나 낱말이다. 보통 낱말 사이에 있는 띄어쓰기나 문장 부호는 무시한다." 따라서 주어진 문장이 팰린드롬이면 true를 아니면 false를 출력하는 문제입니다. 제가 이 문제..
안녕하세요? 오늘은 백준 알고리즘 사이트에 게시된 문제 중 하나인 14500번 테트로미노 문제를 풀어보겠습니다. 먼저 문제를 읽어보겠습니다. 이 문제를 처음 봤을 때, 어릴 적 추억이 떠올랐습니다. 테트리스는 지금까지고 인기있는 게임인데요, 다음에 테트리스 게임과 봇을 만들어서 구현 방법과 알고리즘에 대해 포스팅하도록 하겠습니다. 간단하게 문제의 요지를 적는다면, 입력으로 NxM의 여러 숫자가 포진되어 있는 맵이 주어지고 각각의 테트로미노가 맵에 놓였을 때 생기는 테트로미노와 맵과의 교집합의 최대값을 구하라는 문제입니다. 제가 사용한 알고리즘은 다음과 같습니다. 이 문제가 다소 까다로운 이유는 이 테트로미노가 대칭과 회전이 가능하다는 것입니다. 전 이 문제를 모든 테트로미노의 모양을 맵에 대입해서 결과값..
오늘은 동시성(Concurrency)과 병렬성(Parallelism)의 개념적 차이를 알아보겠습니다. 겉으로 보면 이 두 단어는 모두 뭔가가 동시에, 같이 일어나는 성질을 뜻한다는 것을 알 수 있습니다. 그렇다면 이 둘은 같은 의미를 가진 단어 일까요? 아닙니다. 동시성과 병렬성은 어느정도 관련은 있지만 본질적으로 같지 않습니다. 하드웨어적 관점에서는 이 둘을 어느정도 의미적으로 혼용해서 쓰는 경우도 종종 있습니다만, 소프트웨어적 관점에서는 엄연히 이 둘을 구분 짓습니다. 그렇다면 어떤 차이가 있을까요? 예를 한번 들어보겠습니다. 연구원 Bennett은 연구를 위한 툴을 제작하는 도중에 예상치 못한 memory leak이 발생하여 매우 난감해 하고 있었습니다. 그렇게 힘든 와중에 배가 고파졌습니다. Be..
- Total
- Today
- Yesterday