IT 78

2. 상수와 변수 - iOS 프로그래밍을 위한 스위프트 기초

- 상수와 변수 선언 let : 상수 선언 키워드 var : 변수 선언 키워드 - 상수 선언 후, 값 할당하기 선언을 한 뒤, 나중에 값을 할당하려는 상수나 변수는 반드시 타입을 명시해야 한다. 3. 생각해보기 다음과 같은 경우에 각 값은 상수와 변수 중 어느 것으로 선언하는 것이 더 좋을지 생각해 보자. var name = "yagom" var numberToAdd = 5 let pi = 3.14159 let maxItemCount = 1000 이름 같은 경우는, 추후에 바뀔 가능성이 있기 때문에 변수로 선언하고, numberToAdd의 경우도 마찬가지로 테스트 케이스가 변하는 경우에는 바뀔 가능성이 있다고 판단하여 변수로 선언한다. 또한, pi는 변하지 않는 수이므로 상수, max값 또한 가능한 최대..

1. 명명법/ 콘솔로그/ 문자열 보간법 - iOS 프로그래밍을 위한 스위프트 기초

- 이름짓기 규칙 Lower Camel Case : function, method, variable, constant ex) somwVariableName (자바와 같음) Upper Camel Case : type (class, struct enum, extension...) ex) Person, Point, Week 이전에 올렸던 Swift 기본 문법에서 언급했지만, 대소문자를 구분한다. - 콘솔로그 print - 단순 문자열 출력 dump - 인스턴스의 자세한 설명까지 출력 - 문자열 보간법 String Interpolation 프로그램 실행 중 문자열 내에 변수 도는 상수의 실질적인 값을 표현하기 위해 사용. \()

[프로그래머스] 땅따먹기 - 동적계획법 (Dynamic Programming) (python)

1. 문제 설명 땅따먹기 게임을 하려고 합니다. 땅따먹기 게임의 땅(land)은 총 N행 4열로 이루어져 있고, 모든 칸에는 점수가 쓰여 있습니다. 1행부터 땅을 밟으며 한 행씩 내려올 때, 각 행의 4칸 중 한 칸만 밟으면서 내려와야 합니다. 단, 땅따먹기 게임에는 한 행씩 내려올 때, 같은 열을 연속해서 밟을 수 없는 특수 규칙이 있습니다. 예를 들면, | 1 | 2 | 3 | 5 | | 5 | 6 | 7 | 8 | | 4 | 3 | 2 | 1 | 로 땅이 주어졌다면, 1행에서 네번째 칸 (5)를 밟았으면, 2행의 네번째 칸 (8)은 밟을 수 없습니다. 마지막 행까지 모두 내려왔을 때, 얻을 수 있는 점수의 최대값을 return하는 solution 함수를 완성해 주세요. 위 예의 경우, 1행의 네번째..

Problem Solving 2020.06.16

[백준] 한수 - 완전탐색 (Brute Force) (python)

1. 문제 설명 어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오. 2. 입출력 조건 입력 : 첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다. 출력 : 첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력한다. 3. 입출력 예제 입력 출력 110 99 1 1 210 105 1000 144 4. 나의 풀이 문제를 풀기 전, 이해하는데 시간이 좀 걸렸고, 심지어 등차수열 판별하는 알고리즘을 잘못 짜서 문제 난이도보다 시간이 오래 걸렸다. 단순히 모든 경우를 탐색하여 답을 내기만 하는 ..

Problem Solving 2020.06.15

[프로그래머스] 단속카메라 - 그리디(greedy) (python)

1. 문제 설명 고속도로를 이동하는 모든 차량이 고속도로를 이용하면서 단속용 카메라를 한 번은 만나도록 카메라를 설치하려고 합니다. 고속도로를 이동하는 차량의 경로 routes가 매개변수로 주어질 때, 모든 차량이 한 번은 단속용 카메라를 만나도록 하려면 최소 몇 대의 카메라를 설치해야 하는지를 return 하도록 solution 함수를 완성하세요. 2. 제한 사항 차량의 대수는 1대 이상 10,000대 이하입니다. routes에는 차량의 이동 경로가 포함되어 있으며 routes[i][0]에는 i번째 차량이 고속도로에 진입한 지점, routes[i][1]에는 i번째 차량이 고속도로에서 나간 지점이 적혀 있습니다. 차량의 진입/진출 지점에 카메라가 설치되어 있어도 카메라를 만난것으로 간주합니다. 차량의 진..

Problem Solving 2020.06.14

[프로그래머스] 구명보트 - 그리디(greedy) (python)

1. 문제 설명 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 50kg]이고 구명보트의 무게 제한이 100kg이라면 2번째 사람과 4번째 사람은 같이 탈 수 있지만 1번째 사람과 3번째 사람의 무게의 합은 150kg이므로 구명보트의 무게 제한을 초과하여 같이 탈 수 없습니다. 구명보트를 최대한 적게 사용하여 모든 사람을 구출하려고 합니다. 사람들의 몸무게를 담은 배열 people과 구명보트의 무게 제한 limit가 매개변수로 주어질 때, 모든 사람을 구출하기 위해 필요한 구명보트 개수의 최솟값을 return 하도록 solution 함수를 작성해..

Problem Solving 2020.06.13

[프로그래머스] 타일 장식물 - 동적계획법 (Dynamic Programming) (python)

1. 문제 설명 대구 달성공원에 놀러 온 지수는 최근에 새로 만든 타일 장식물을 보게 되었다. 타일 장식물은 정사각형 타일을 붙여 만든 형태였는데, 한 변이 1인 정사각형 타일부터 시작하여 마치 앵무조개의 나선 모양처럼 점점 큰 타일을 붙인 형태였다. 타일 장식물의 일부를 그리면 다음과 같다. 그림에서 타일에 적힌 수는 각 타일의 한 변의 길이를 나타낸다. 타일 장식물을 구성하는 정사각형 타일 한 변의 길이를 안쪽 타일부터 시작하여 차례로 적으면 다음과 같다. [1, 1, 2, 3, 5, 8, .] 지수는 문득 이러한 타일들로 구성되는 큰 직사각형의 둘레가 궁금해졌다. 예를 들어, 처음 다섯 개의 타일이 구성하는 직사각형(위에서 빨간색으로 표시한 직사각형)의 둘레는 26이다. 타일의 개수 N이 주어질 때..

Problem Solving 2020.06.11

[프로그래머스] n진수 게임 - ? (python)

1. 문제 설명 튜브가 활동하는 코딩 동아리에서는 전통적으로 해오는 게임이 있다. 이 게임은 여러 사람이 둥글게 앉아서 숫자를 하나씩 차례대로 말하는 게임인데, 규칙은 다음과 같다. 숫자를 0부터 시작해서 차례대로 말한다. 첫 번째 사람은 0, 두 번째 사람은 1, … 열 번째 사람은 9를 말한다. 10 이상의 숫자부터는 한 자리씩 끊어서 말한다. 즉 열한 번째 사람은 10의 첫 자리인 1, 열두 번째 사람은 둘째 자리인 0을 말한다. 이렇게 게임을 진행할 경우, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 0, 1, 1, 1, 2, 1, 3, 1, 4, … 순으로 숫자를 말하면 된다. 한편 코딩 동아리 일원들은 컴퓨터를 다루는 사람답게 이진수로 이 게임을 진행하기도 하는데, 이 경우에는 ..

Problem Solving 2020.06.09

42서울 | 온라인 테스트 후기

https://42seoul.kr/ 42 Seoul | 이노베이션 아카데미 교육 프로그램 42서울은 이노베이션 아카데미의 소프트웨어 개발자 양성프로그램입니다. 42seoul.kr 어제 미루고 미루던 (ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ) 42서울 교육 온라인 테스트를 보았다. 테스트는 간단하게 4분 동안 기억력 테스트를 보고 2시간 동안 논리력 테스트를 보게된다. 기억력 테스트는 눌려진 버튼의 순서를 기억해서 그대로 누르기만 하면 된다. 15단계 까지 통과한걸로 기억한다. 논리력 테스트는 처음보는 유형이었고 비행기 처럼 생긴걸 별로 옮기는 게임이었다. 튜토리얼도 영어로 해줬는데 무슨 소린지 하나도 모르겠어서 한 5분 동안은 당황했다. 결국 아무거나 눌러보면서 규칙을 익히긴 했는데... 2단계 부터는 익숙해져서 할만 ..

잡담 2020.06.09

[프로그래머스] 짝지어 제거하기 - 스택 (python)

1. 문제 설명 짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙입니다. 이 과정을 반복해서 문자열을 모두 제거한다면 짝지어 제거하기가 종료됩니다. 문자열 S가 주어졌을 때, 짝지어 제거하기를 성공적으로 수행할 수 있는지 반환하는 함수를 완성해 주세요. 성공적으로 수행할 수 있으면 1을, 아닐 경우 0을 리턴해주면 됩니다. 예를 들어, 문자열 S = baabaa 라면 b aa baa → bb aa → aa → 의 순서로 문자열을 모두 제거할 수 있으므로 1을 반환합니다. 2. 제한 사항 문자열의 길이 : 1,000,000이하의 자연수 문자열은 모두 소문자로 이루어져..

Problem Solving 2020.06.09