😊Programmers에서 배운 것들
안녕하세요 박민성입니다.
오늘은 최근에 Programmers를 시작하면서 배웠던 것들을 2가지 정도 간단하게 소개할 예정입니다.
Programmers에서는 다른 사람들의 풀이를 정말 보기 편하게 되어 있는데요.
이것은 Programmers의 장점 중에 하나라고 생각이 듭니다. ㅎㅎ
Programmers에서 다른 사람들의 풀이를 보고
그때 당시에 살짝 충격을 받은 풀이들을 소개해보자고 합니다.
1. 더하기
제 기억상
6이랑 14를 a와 b로 받으면 614로 만들어야 하는 문제가 있었습니다.
a와 b는 둘 다 int형으로 들어오고 반환도 int형으로 했어야 했습니다.
저는 처음 이 문제를 보고 그냥 a랑 b를 int형에서 ToString을 사용해서 string형으로 바꾸고
a + b하고 다시 int.Parse를 이용해서 int형으로 반환하는 생각을 하였는데요.
하지만.
문자열로 만들때 a랑 b에 ToString을 사용하지 않고
$"{a}{b}" 이렇게 문제를 해결할 수 있었습니다. 😧
여기서 이런 방법이 있다는 것을 알고
더 나아가서 이 방법을 더 자세히 알아보았는데요.
ToString()이랑 $"{}"은 일반적인 성능 상에 차이는 거의 없지만
결합해야 하는 요소들이 많아지면 요소들에 일일이 ToString() 하는 것보다
$"{}" 문자열 보간 방식을 사용하는 것이 좋다는 결과를 얻었습니다.
확실히 가독성 측면에서도 좋아 보이고 유용해 보입니다. 🙂
2. 연속 문자열
제 기억상 그런 문제가 있었습니다.
문자열 a가 들어오고 정수 b가 들어왔을 때
문자열에 문자가 정수만큼 길이가 길게 하여 반환하는 문제가 있었습니다.
예를 들면 say라는 문자열이 a로 들어고 3이라는 정수가 b로 들어오면
반환을 sssaaayyy으로 해야 하는 문제가 있었습니다.
저는 그냥 처음에 이 문제를 보고 "아 뭐야 쉬운 문제네 그냥 for문 2개를 돌리면 되겠네"
라고 생각하고
for (int i = 0; i < a.Length; ++i)
{
for (int j = 0; j < b; ++j)
{
}
}
이런식으로 이중 for문을 사용해서 풀었습니다.
제출 후에 다른 사람들의 풀이를 보고 또 기발한 아이디어를 배웠습니다.
new string()을 사용해서 풀더라고요.
new string() 생성자에 문자과 정수형을 넘겨주면 그 문자를 정수형만큼 반복한 문자열을 만들어줍니다.
그래서 안쪽 for문을 new string()으로 대체하면서 시간복잡도를 줄일 수 있습니다.
확실히 Programmers에서 다른 사람들의 풀이를 보면서 배우는 것들이 많은 것 같습니다. 😀
이것들 외로 Linq문들이나 비트연산 등 여러가지 활용을 배웠습니다. 기회가 된다면 다음에 소개해보도록 하겠습니다.
봐주셔서 감사합니다. ☺️