๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค[Java] - ์ˆซ์ž์˜ ํ‘œํ˜„

by ์ฃผ๋ฐœ2 2020. 1. 21.
๋ฐ˜์‘ํ˜•

 

https://programmers.co.kr/learn/courses/30/lessons/12924

 

 

์ฝ”๋“œ

	public static int solution(int n) {
		int answer = 0;
		int startNum = 1;
		while(startNum <= n) {
			int sum = 0;
			for(int i=startNum; i<=n; i++) {
				sum += i;
				if(sum == n) {
					answer ++;
					break;
				}
                /*
				else if(sum > n)
					break;
                */
			}
			startNum ++;
		}
		return answer;
	}

 

ํ’€์ด

n์ด 15์ผ ๊ฒฝ์šฐ ์˜ˆ๋กœ๋“ค๋ฉด,,

1+2+3+4+5 = 15

4+5+6 = 15

7+8 = 15

15 = 15

์ด ๋„ค๊ฐ€์ง€์˜ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.

startNum ์ด ์ž…๋ ฅ๋ฐ›์€ n๋ณด๋‹ค ์ž‘์„๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ–ˆ๋‹ค.

(startNum์€ ๋”ํ• ๋•Œ ๊ฐ€์žฅ ์ฒซ ์ˆซ์ž. 1+2+3+4+5 ์—์„œ๋Š” 1, 4+5+6 ์—์„œ๋Š” 4๊ฐ€ ๋œ๋‹ค.)

 

for๋ฌธ์—์„œ i๋ฅผ startNum ๋ถ€ํ„ฐ์‹œ์ž‘ํ•ด์„œ ๋”ํ•ด์ค€๋‹ค.

๋งŒ์•ฝ sum์ด n๊ณผ ๊ฐ™๋‹ค๋ฉด, answer์„ +1์”ฉ ํ•˜๊ณ  breakํ†ตํ•ด ๋น ์ ธ๋‚˜๊ฐ„๋‹ค.

for๋ฌธ์ด ์ „๋ถ€๋๋‚ ์‹œ startNum์„ +1์”ฉ ์ฆ๊ฐ€์‹œํ‚จ๋‹ค.

 

 

์œ„์™€ ๊ฐ™์ด ํ’€๊ณ  ์ œ์ถœํ•˜๋‹ˆ ํ…Œ์ŠคํŠธ์ผ€์ด์Šค๋Š” ์ „๋ถ€ ๋งž๋Š”๋ฐ ํšจ์œจ์„ฑ์—์„œ ์‹คํŒจ๊ฐ€ ๋‚ฌ๋‹ค...

๊ทธ๋ž˜์„œ sum์— i๊ฐ’์„ ๋”ํ•˜๊ณ , sum์ด ์ž…๋ ฅ๋ฐ›์€ n๋ณด๋‹ค ์ปค์ง€๋ฉด ๊ทธ ์ดํ›„๋Š” ํŒ๋‹จํ•  ํ•„์š”๊ฐ€ ์—†์–ด์„œ ๋น ์ ธ๋‚˜์™€์ฃผ์—ˆ๋”๋‹ˆ ํ†ต๊ณผ๋ฅผ ํ–ˆ๋‹ค.(์œ„์—์„œ ์ฃผ์„์นœ ๋ถ€๋ถ„ ์ œ๊ฑฐ)

/*
else if(sum > n)
    break;
*/

 

 

 

๋‹ค๋ฅธ ํ’€์ด

public class Expressions {

    public int expressions(int num) {
        int answer = 0;
        for (int i = 1; i <= num; i += 2) {
            if (num % i == 0) {
                answer++;
            }
        }
        return answer;
    }

    public static void main(String args[]) {
        Expressions expressions = new Expressions();
        // ์•„๋ž˜๋Š” ํ…Œ์ŠคํŠธ๋กœ ์ถœ๋ ฅํ•ด ๋ณด๊ธฐ ์œ„ํ•œ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.
        System.out.println(expressions.expressions(15));
    }
}

์ฃผ์–ด์ง„ ์ž์—ฐ์ˆ˜๋ฅผ ์—ฐ์†๋œ ์ž์—ฐ์ˆ˜์˜ ํ•ฉ์œผ๋กœ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์˜ ์ˆ˜๋Š” ์ฃผ์–ด์ง„ ์ˆ˜์˜ ํ™€์ˆ˜ ์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜์™€ ๊ฐ™๋‹ค๋ผ๋Š” ์ •์ˆ˜๋ก  ์ •๋ฆฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

 

class Solution {
      public int solution(int n) {
          int answer = 0;
          
          for(int i=1; i<=n; i++) {
              int sum = 0;
              for(int j=i; j<=n; j++) {
                  sum += j;
                  
                  if(sum==n) {
                      answer++;
                      break;
                  } else if(sum>n) 
                      break;
              }
          }      
          return answer;
      }
    }
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€