라벨이 codewars인 게시물 표시

Codewars 문제 풀이 : Salesman's Travel

문제 Salesman's Travel 세일즈맨이 한 동네에서 할 일을 한번에 처리할 수 있도록, 주소를 재정리하는 일입니다. 즉 그 동네에 도착했을때 방문해야하는 주소를 모두 가져와서 보기 쉽게 정리하는 작업인거죠. Input 주소들과 요청받은 우편번호입니다. Output 우편번호에 해당하는 주소를 가져다 다음의 포맷으로 정리합니다. zipcode:street and town,street and town,.../house number,house number,... 해결방안 이해하고보니 단순 String 처리 문제인데, 이해가 어렵습니다. 꼼꼼히 읽어보고 나서야 이해가 되네요. 원본 주소들을 재정리해서 출력 포맷에 맞게 재정리 하면 되는겁니다. 자료구조 std::string ad = "123 Main Street St. Louisville OH 43071,432 Main Long Road St. Louisville OH 43071,786 High Street Pollocksville NY 56432,"     "54 Holy Grail Street Niagara Town ZP 32908,3200 Main Rd. Bern AE 56210,1 Gordon St. Atlanta RE 13000,"     "10 Pussy Cat Rd. Chicago EX 34342,10 Gordon St. Atlanta RE 13000,58 Gordon Road Atlanta RE 13000,"     "22 Tokyo Av. Tedmondville SW 43098,674 Paris bd. Abbeville AA 45521,10 Surta Alley Goodtown GG 30654,"     "45 Holy Grail Al. Niagara Town ZP 32908,320 Main Al. Bern AE 56210,14 Gordon Park Atlanta RE 130...

Codewars 문제 풀이 : Roman Numerals Encoder

서론 C++ STD 무식쟁이 임베디드 개발자가 C++ STD 좀 해볼까 하고 codewars의 문제 풀이에 도전합니다. 문제 CodeWars: Roman Numerals Encoder 간단히 말해서 아라비아 숫자를 로마 숫자로 변경하는 문제입니다. 위키 에 다음과 같은 테이블이 있습니다. Symbol I V X L C D M Value 1 5 10 50 100 500 1,000 여기에 IV(4), IX(9), LX(40), XC(90), CD(400), CM(900) 만 추가하면 됩니다. 해결방안 보통 IV와 같은 문자를 만드는 방법을 고민하게 되는데 이런 간단한 문제에서는 그냥 배열로 나열해놓고 하나씩 대입해버리더군요. 그게 간단합니다. 자료구조 C에서는 그냥 struct 만들어서 array로 돌려버리면 끝이지만, STD 를 쓰기로 했으니 고민이 됩니다. std::map 적합해보입니다. value에 따라서 symbol을 가져오면 되니까요. 초기화도 간단해서 좋네요.     std::map<int, std::string> romanNumeric = {         { 1000, "M" },         { 900, "CM" },         { 500, "D" },         { 400, "CD" },         { 100, "C" },         { 90, "XC" },         { 50, "L" },         { 40, "XL" },         { 10, "X" },         { ...

[TIL] codewars 사이트 소개 및 시작!

영어공부한다고 코딩 공부를 좀 미뤄뒀는데 우연찮게 소개받은 사이트를 발견하고 코딩 공부를 다시 시작하게 되었습니다. 수많은 코딩 인터뷰 사이트를 다녀봤는데 지루하고 금방 질리는 면이 있어서 지속하기 어려웠습니다. 그런데 이 사이트는 codewars라는 이름에 걸맞게 게임같은 화면과 여러가지 재미있는 요소를 넣어서 코딩 공부를 할 수 있도록 해놓아서 시작해보았습니다. 게다가 웹에서 vi를 쓸수 있군요! 추천합니다! kata 라는게 있는데 튜토리얼모드인건지 문제가 계속 이어지네요. 풀어보고 있습니다! https://www.codewars.com/ 오늘 푼 문제 (대략 이해한대로 의역하자면) 한 층에 큐브를 n^3개를 쌓고 그 다음 층은 (n-1)^3 개를 쌓게 됩니다. 그렇게 하여 가장 높은 층은 1^3 개의 큐브가 쌓이게 됩니다. 큐브가 주어졌을때 한개도 남기지 않고 큐브를 쌓을 수 있으면 층수를 리턴하고 큐브가 남을 경우 -1을 리턴하시오. 이런 문제가 나왔을때 수학공식이 바로 떠오르지 않는다면 일단 무식한 방법으로 풀고 개선하는게 가장 좋더군요. long long findNb(long long m) { long long sum = 0; long long i = 1; for (long long i = 1; sum < m; i++) { sum += i*i*i; if (m == sum) { return i; } if (sum > m) { break; } } return -1; } 아 정말 너무 무식하네요. 여러가지 아이디어가 떠오르긴 했습니다만 세제곱인 관계로 그렇게 부하가 크지 않을것 같아서 submit 해버렸습니다.

이 블로그의 인기 게시물

WSL2 Ubuntu 20.04 및 네트워크 설정

구글 시트에 여러 행 한번에 추가하기

리눅스 멀티코어를 사용하는 tar 압축/해제