728x90
그동안 for을 잘 못 이해하고 있었다.
for(int i = 5; i == 0; i--)
이렇게 선언하면 5,4,3,2,1,0 까지 6번을 실행하는 것으로 이해하고 있었는데 이 for문은 i==0조건 때문에 반복문이 실행되지 않는다.
여기서 for문의 구조를 확인해보면 다음과 같다.
for (초기값; 조건식; 증감식) {
// 반복 수행할 코드
}
for문의 조건식은 반복을 계속할지 말지를 결정하는 역할을 한다.
조건식의 결과가 참(True)이면 반복이 계속되고 거짓(false)이면 반복이 종료된다.
따라서 for문의 조건식 i==0은 i가 0이 아니면 반복을 게속하고 i가 0이면 반복을 종료하게 된다.
i가 5로 초기화되었기 때문에 i==0은 처음부터 거짓이 되기 때문에 반복이 실행하지 않는 것이다.
그래서 이렇게 안 짜고
class Solution {
public String solution(String my_string) {
String answer = "";
// 문자열의 뒤에서부터 앞으로 반복하며 answer에 문자를 추가
for (int i = my_string.length() - 1; i >= 0; i--) {
// i번째 인덱스의 문자를 가져와서 answer에 추가
answer += my_string.charAt(i);
}
// 뒤집힌 문자열을 반환
return answer;
}
}
이렇게 짜서 실패했었다.
class Solution {
public String solution(String my_string) {
String answer = "";
for (int i = my_string.length() - 1; i == 0; i--) {
answer += my_string.charAt(i);
}
return answer;
}
}
- + 여기서 charAt()메서드는 문자열의 인덱스를 입력받아 해당 위치의 문자를 반환한다. 지금 String이니까 char로 하나씩 받아야 해서 사용했다.
- String으로 저장된 문자열 중에서 한 글자만 선택해서 char타입으로 변환해준다.
결론 : 조건식을 ~까지라는 개념으로 이해하고 있었음.
그러나 조건식은 false이면 애당초 실행되지 않으며 true일때만 실행됨
+ 만약 아래와 같으면 어떻게 될까
for( int i = 5; i =0; i--)
무한 루프에 빠진다.
이유 : 조건식에 해당하는 i=0이 계속 i를 0으로 초기화 하기 때문이다. 여기서 =는 대입 연산자
+ C++
#include <string>
#include <vector>
using namespace std;
string solution(string my_string) {
string answer = "";
for(int i = my_string.size()-1; i>=0; i--){
answer += my_string[i];
}
return answer;
}
'코테 > 프로그래머스' 카테고리의 다른 글
특정 문자 제거 (0) | 2023.02.22 |
---|---|
문자 반복 출력하기 (0) | 2023.02.22 |
각도기 (0) | 2023.02.21 |
배열 뒤집기 (0) | 2023.02.21 |
피자 나눠 먹기 (2) (0) | 2023.02.21 |
댓글