Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- UE4 커스텀로그
- UELOG
- UML관련
- 델리게이트
- 약참조
- 언리얼가비지컬렉터
- 데이터애셋
- 선택정렬
- 언리얼엔진구조체
- unorder_map
- 강참조
- 알고리즘
- 프로그래머스
- enumasByue
- 람다사용정렬
- 크리티컬섹션
- 람다
- dataasset
- moreeffectiveC++
- stl
- C++최적화
- 애셋로드
- 스마트포인터
- UE_LOG
- C++
- 정렬알고리즘
- BFS
- 정렬
- map
- 자료구조
Archives
- Today
- Total
기억을 위한 기록들
[Code Wars] Build Tower(C++) 본문
https://www.codewars.com/kata/576757b1df89ecf5bd00073b
Build a pyramid-shaped tower, as an array/list of strings, given a positive integer number of floors.
A tower block is represented with "*" character.
양의 정수 층수가 주어졌을 때, 피라미드 모양의 탑을 줄 배열/목록으로 짓습니다. 탑 블록은 "*" 문자로 표현됩니다.
나의 풀이 : 전체 필요한 칸이 얼마만큼인지 구하고 *이 몇개찍어야하는지에대해서 접근했었다
#include <string>
#include <vector>
#include <iostream>
std::vector<std::string> towerBuilder(unsigned nFloors) {
int n=(nFloors*2)-1;
std::vector<std::string> v;
int min = n/2;
int max = n/2;
//전체 층
for(unsigned int i=0;i<nFloors;i++)
{
std::string s;
//해당 층에대한 판별
for(int j=0;j<n;j++)
{
if(min<=j && j <= max)
{
s+="*";
}else
{
s+=" ";
}
}
v.push_back(s);
min--;
max++;
}
return v;
}
다른사람의 풀이 : 내가 작성한 코드를 보고 마음에 들지 않았고, BestPractices를 보고 크게 한번 또 배웠다...
for문에 계산값을 두개로 만든 점과, string 생성자에 바로 문자열를 만들어서 간결하게 만들었다는 점이다.
#include <string>
#include <vector>
using namespace std;
vector<string> towerBuilder(unsigned nFloors) {
vector <string> vect;
for(unsigned i = 0, k = 1; i < nFloors; i++, k+=2)
vect.push_back(string(nFloors-i-1, ' ') + string(k, '*') + string(nFloors-i-1, ' '));
return {vect};
}
'Coding Test - cpp > Etc' 카테고리의 다른 글
요즘 새로 써보고 있는 프로그램 등등 (0) | 2024.07.23 |
---|---|
[프로그래머스 Lv 1] [PCCP 기출문제] 1번/ 붕대감기 (0) | 2024.03.24 |
[Code Wars] Take a Ten Minutes Walk(C++) (1) | 2024.01.09 |
[Code Wars] Replace With Alphabet Position(C++) (1) | 2023.12.21 |
[Code Wars] Replace With Alphabet Position(C++) (1) | 2023.12.20 |