๐ŸŒท๐ŸŒผ๋ชจ์—ฌ๋ด์š” ๊ฐœ๋ฐœ์˜์ˆฒ๐ŸŒท๐ŸŒผ

[์„ฑ๋Šฅ๊ฐœ์„ ์„ ์œ„ํ•œ ํŒ] JAVA ์ด์ค‘ for๋ฌธ ์„ฑ๋Šฅ๊ฐœ์„  ๋ฐฉ๋ฒ• ๋ณธ๋ฌธ

๊ฐœ๋ฐœ/JAVA

[์„ฑ๋Šฅ๊ฐœ์„ ์„ ์œ„ํ•œ ํŒ] JAVA ์ด์ค‘ for๋ฌธ ์„ฑ๋Šฅ๊ฐœ์„  ๋ฐฉ๋ฒ•

์š”์ผ์ด 2021. 7. 26. 14:44
๋ฐ˜์‘ํ˜•

๊ฐœ๋ฐœ์„ ํ•˜๋ฉด์„œ ๋ถ€๋“์ด ํ•˜๊ฒŒ JAVA์—์„œ ์ด์ค‘ for๋ฌธ์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.

 

๊ทธ๋Ÿฐ๋ฐ ์ด์ค‘ for๋ฌธ์€ ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์œผ๋ฉด ๋งŽ์„ ์ˆ˜๋ก ๋Š๋ ค์ง‘๋‹ˆ๋‹ค.

 

์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์„ ํ•˜๋‚˜ ์ œ์‹œํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

- ์›๋ž˜ ์ฝ”๋“œ

// ๋‚ ์งœ๋ฅผ ๋‹ด์€ List
for(int i=0; i<keyWordDayList.size(); i++) {
	// i ๋ฒˆ์งธ์˜ ๋‚ ์งœ ๊ฐ’์„ ๊บผ๋‚ธ๋‹ค.
    String writeDt = keyWordDayList.get(i).get("writeDt").toString();
		// ์ƒ์„ธ ์ •๋ณด List
        for(int k=0; k<keyWordDetailList.size(); k++) {
			String kwNmTmp =  keyWordDetailList.get(k).get("kwNm").toString();
			String writeDtTmp =  keyWordDetailList.get(k).get("writeDt").toString();
			String kwCount =  keyWordDetailList.get(k).get("kwCount").toString();
				// i๋ฒˆ์งธ์˜ ๋‚ ์งœ๊ฐ’๊ณผ ์ƒ์„ธ์ •๋ณด List์˜ ๋‚ ์งœ๊ฐ’์ด ๊ฐ™์œผ๋ฉด
                if(writeDt.equals(writeDtTmp)) {
                	// ๋‚ ์งœ๋ฅผ ๋‹ด์€ List์˜ i๋ฒˆ์งธ์— ์ถ”๊ฐ€ํ•œ๋‹ค.
					keyWordDayList.get(i).put(kwNmTmp, kwCount);
				}
			}
}

๋‚ ์งœ๋ฅผ ๋‹ด์€ List size() * ์ƒ์„ธ ์ •๋ณด List size() ๋ฒˆ Loop๋ฅผ ๋Œ๊ฒŒ๋˜๋Š”๋ฐ  

 

์˜ˆ) 50 * 100 = 5000๋ฒˆ

 

์ด๋งŒํผ ๊ณ„์‚ฐ์„ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒŒ ์ €์—๊ฒŒ๋Š” ๋„ˆ๋ฌด ๋น„ํšจ์œจ์ ์œผ๋กœ ๋Š๊ปด์กŒ์Šต๋‹ˆ๋‹ค.

 

์‹œ๊ฐ„์„ ์žฌ๋ดค๋”๋‹ˆ 31769ms ์ •๋„์˜ ์‹œ๊ฐ„์ด ๊ฑธ๋ ธ๊ณ  ์ด๋Š” 31์ดˆ์ •๋„์˜ ์‹œ๊ฐ„์ด ์†Œ์š”(๋ณ„๋กœ ์•ˆ๊ฑธ๋ฆฐ๋‹ค ์ƒ๊ฐํ•˜๊ฒ ์ง€๋งŒ ์‚ฌ์šฉ์ž ์ž…์žฅ์—์„œ๋Š” 5์ดˆ์ด์ƒ์€ ๋„ˆ๋ฌด ๊ธธ๋‹ค๊ณ  ๋Š๊ปด์ง‘๋‹ˆ๋‹ค)๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

 

๊ทธ๋ž˜์„œ ์ €๋Š” ์ด๋ฅผ ๊ฐœ์„ ํ•ด์•ผ๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐ์ด ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

 

- ๊ฐœ์„ ์ฝ”๋“œ

HashMap<String, Object> list = new HashMap<String, Object>();

// ๋‚ ์งœ List์˜ ๋‚ ์งœ์™€ ํ•ด๋‹น ์ธ๋ฑ์Šค๋ฅผ HashMap์— ์ €์žฅ 
for(int i=0; i<keyWordDayList.size(); i++) {
	list.put(keyWordDayList.get(i).get("writeDt").toString(), i);
}

//์ƒ์„ธ์ •๋ณด List
for(int k=0; k<keyWordDetailList.size(); k++) {
      String kwNmTmp =  keyWordDetailList.get(k).get("kwNm").toString();
      String writeDtTmp =  keyWordDetailList.get(k).get("writeDt").toString();
      String kwCount =  keyWordDetailList.get(k).get("kwCount").toString();
      // ์ƒ์„ธ์ •๋ณด List์˜ ๋‚ ์งœ์ •๋ณด๋กœ HashMap์—์„œ ์ธ๋ฑ์Šค๋ฅผ ๊บผ๋‚ด ์ €์žฅ
      keyWordDayList.get((int) list.get(writeDtTmp)).put(kwNmTmp, kwCount);
}

HashMap์— ๋ฏธ๋ฆฌ ์ธ๋ฑ์Šค๋ฅผ ์ €์žฅํ•ด ๋†“๊ณ 

 

๋น„๊ตํ•˜์ง€์•Š๊ณ  ์ƒ์„ธ์ •๋ณด ์กฐํšŒ Loop๋ฅผ ๋Œ๋•Œ ๋ฐ”๋กœ๋ฐ”๋กœ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ• ์ž…๋‹ˆ๋‹ค.

 

์ด๋Š” 55ms ์ •๋„์˜ ์‹œ๊ฐ„์ด ๊ฑธ๋ ธ์œผ๋ฉฐ, 31,714ms ์˜ ์‹œ๊ฐ„์„ ์ค„์˜€์Šต๋‹ˆ๋‹ค. (55ms๋Š” 1์ดˆ๋„ ์•ˆ๊ฑธ๋ฆผ)

 

๊ธ€์“ฐ๋Š” ์†œ์”จ๊ฐ€ ์—†์œผ๋‚˜ ์ตœ๋Œ€ํ•œ ์—ด์‹ฌํžˆ ์„ธ์„ธํ•˜๊ฒŒ ์ ์—ˆ์Šต๋‹ˆ๋‹ค.

 

ํด๋ฆฐ ์ฝ”๋”ฉ์„ ์œ„ํ•ด ์ฐธ๊ณ ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

 

 

Comments