[self-study]알고리즘 연습문제 _ 반복문

윤성해·2023년 3월 9일
0

알고리즘

목록 보기
4/22
post-thumbnail

어려운 반복문..!
아쟈쟈..💪🏻

1. 숫자 더하기

문제 설명
입력되는 수에 따라 0부터 해당 수까지의 합을 구하려고 합니다.
num은 1이상의 자연수가 들어옵니다.
만약 num이 5라면 1 + 2 + 3 + 4 + 5를 구해야 합니다.

풀이 과정

  1. 최초식과 조건식이 헷갈린다. 특히 조건식..
  2. 문제에서 1이상의 자연수라고 해서 최초식에 1을 썼는데 틀렸음! 0임
  3. 과제할 때 num / num.length 둘중에 어떻게 써야 맞는건지 헷갈렸는데, 보통 문자열일 때 .length 를 붙여주는 것 같아서 num 이라고 썼다. 이건 맞았음 : )
  4. 부등호가 매우 헷갈린다. 아래와 같이 써보니, i < 5 라고 쓰면 index값을 4 로 가진 숫자 5가 나온다. 조건식에 나오는 숫자는 인덱스 값인가?
  5. 이렇게 i < num + 1 ;으로 써주거나, 부등호를 바꿔서 i <= num; 으로 해주면 출력이 잘 됨.
function sum(num) {
	let result = 0;
	for (let i = 0; i < num+1; i ++) {
		result = result + i
	}
	console.log(result)
}
function sum(num) {
	let result = 0;
	for (let i = 0; i <= num; i ++) {
		result = result + i
	}
	console.log(result)
}

2. 특정 문자열 세기

문제 설명
문자열에서 "a"가 몇 번 등장하는지 횟수를 구하는 함수를 만들려고 합니다.
반복문을 이용해 "a"의 등장 횟수를 변수 "count"에 할당하세요.

입력 인자 : str은 문자열입니다.

풀이 과정


1. 위 사진은 처음에 썼던 코드. count++ 로 하면 갯수를 셀 수 있다는 것을 과제를 통해 알고있기는 한데.. 왜 저렇게 쓰는지 아직 이해하진 못함
2. 내가 썼던 indexOf() 는 배열에서 특정 문자열이 몇번째 인덱스에 오는지 쓰는 것. 인덱스오브는 첫번째 인덱스값만 가져올 수 있다.
indexOf()


3. 위처럼 조건문을 넣어서 "a" 찾으면 count++ !! 로 쓰니까 잘 되었는데,
레퍼런스 코드는 내가 동그라미친 부분과 다르게 i < str.length 라고 되어있음 부등호가 다름

function countLetter(str) {
	let count = 0;
	str = str.toLowerCase()
	for (let i = 0; i < str.length; i ++) {
		if (str[i] === "a") {
			count ++
		}
	}
	console.log(count)
}

또, 레퍼런스 코드는 toLowerCase() 함수를 통해 소문자 "a"만을 출력해 주었다.


3. 문자열 삽입

문제 설명
num을 입력받아 1부터 num까지 각각의 숫자 사이에 "-"가 들어간 문자열을 만들어야 합니다.
num에 3일 경우에는 "1-2-3"입니다.

풀이 과정



1. 초기식에 써야하는 숫자와 result값에 써줘야하는 숫자를 헷갈려서 틀린 문제.
2. 맨 처음에 나오는 숫자는 고정된 result 값, 2번째 나오는 숫자는 초기식에 써준 숫자!
3. 그래서 result값에는 1을 써주고, 초기식에 나오는 숫자는 2를 써줘야함

4. 해결! 이문제로 약간 저기에 써줘야 하는 숫자의 의미를 조금 이해한 듯 하다.


4. 홀수 문자열

문제 설명
num을 입력받아 1부터 num까지의 숫자 중 홀수로 구성된 문자열을 만들어야 합니다.
num에 5일 경우에는 "135"입니다.

풀이 과정


1. 처음에는 let result = 요기에 숫자를 썼었음 (빈거 " " 만들어줘야함)
2. 조건문 안에 i 가 나와야 하는 이유는 요소 하나하나를 써줘야 하니까!! num은 변수명..!
3. 근데 num안에 i 니까 num[i] 라고 쓰면 안되나? 싶어서 해봤는데 안됨.ㅋㅋㅋㅋ왜지.....?????😠 그냥 i 쓰면 하나하나 말하는거고 num[i]면 num중에~ 인가? 같은말 같은디..


5. 가장 큰 수 찾기

문제 설명
str은 무작위 숫자인 문자열입니다. 해당 문자열에서 가장 큰 수를 구하는 함수를 만들어야 합니다.
만약 str에 "12345"가 들어온다면 "5"를 나타내야 합니다.

  • 입력인자 : str은 문자열입니다.
  • 주의사항 :
    1.str에서 각각의 문자를 숫자로 바꿔서 계산해야 합니다.
    2.비교할 수 있는 기준값이 있어야 합니다.
    3.최댓값을 저장할 수 있는 변수가 있어야 합니다.

풀이 과정

도대체 왜 안될까.. 해결 못하고 끝낸 문제ㅜㅜ

레퍼런스 코드를 입력해도 이상하게 나온다. 정 답을 알려줘.. 뭘까..

아무튼 못풀어서 최대값 찾는 방법을 구글링 해본 결과,
풀 수 있는 다양한 방법이 있었다. (나는 해결 못하고있지만!) 문제는 문자열을 숫자로 바꿔주라고 했으니 반복문에 조건문 사용해서 푸는게 맞을 것 같은데ㅜㅜ (내장함수 해보니까 안되었..)
1. for 반복문
2. 내장함수 Math.max() / Math.min()
참고할만한 포스팅1
참고할만한 포스팅2
MDN

아궁금혀..

profile
Slow and steady wins the race.

3개의 댓글

comment-user-thumbnail
2023년 3월 9일

고생이 많구먼
1, 먼저 1씩 증가하는 것은 아래와 같음
예를 들어 5까지 증가 하는것.

숫자 0 ~ 5 까지 1씩 증가
for (int i = 0; i <= 5; i++) {
System.out.print(i + ", ");
}
// 출력 결과: 0, 1, 2, 3, 4, 5

답글 달기
comment-user-thumbnail
2023년 3월 10일

집에 오면 알랴 줌!

1개의 답글